十月 CMS:无法创建表单小部件
October CMS : Not able to create a Form Widget
我是 October CMS 的新手,正在学习创建表单小部件。但我收到以下错误:
The partial '_field_actorbox.htm' is not found.
/opt/lampp/htdocs/octobermovies/modules/system/traits/ViewMaker.php line 65
我的小部件文件夹名称是 'formwidgets'
我在 partials 文件夹中的 partials 文件名为“_widget.htm”
我的表单小部件的内容 > Actorbox.php
namespace Watchlearn\Movies\FormWidgets;
use Backend\Classes\FormWidgetBase;
use Config;
class ActorBox extends FormWidgetBase
{
public function widgetDetails()
{
return [
'name' => 'Actorbox',
'description' => 'Field for adding actors'
];
}
public function render(){
return $this->makePartial('widget');
}
public function loadAssets()
{
$this->addCss('css/select2.css');
$this->addJs('js/select2.js');
}
}
我在 plugin.php
中注册小部件的代码
public function registerFormWidgets()
{
return [
'Watchlearn\Movies\FormWidgets\ActorBox' => [
'label' => 'ActorBox Field',
'code' => 'actorbox'
]
];
}
我也尝试查找并查看文档,但找不到任何解决方案。
您是否使用 artisan 创建了表单小部件文件?
php artisan create:formwidget watchlearn\Movies Tagbox
(进入插件文件夹)
也许它会帮助您设置正确的权限并帮助您解决问题:)
(它对我有用,我遇到了完全相同的问题)
我认为错误在于:
My widget folder name is 'formwidgets' My partials file name inside partials folder is '_widget.htm' Content of my formwidgets > Actorbox.php
但是你有
class ActorBox extends FormWidgetBase
而且您似乎在整个代码的其余部分都使用了那个 class 带有大写字母 B 的名称。
OctoberCMS 正在查找文件 formWidgets/ActorBox.php,与 registerFormWidgets 中给出的 classname 相匹配 函数。 FormWidget(以及 Component 和 Model 等)。php 文件名应始终与包含的 Widget(或任何大小写)class 名称 完全匹配 .
所以在这种情况下,表单小部件根本没有注册,因为没有找到具有匹配名称的文件。您正在使用的表单定义 .yaml 文件中的 type: actorbox
字段默认情况下会导致 October 查找要呈现的 _field_actorbox.htm
部分。
所以只需将您的 Actorbox.php 重命名为 ActorBox.php,我希望您的问题应该得到解决。
尝试检查文件的路径actorbox.php。我也遇到了同样的问题,我将 actorbox.php 移动到正确的路径然后一切正常。
Actorbox.php 应该在 formwidgets 路径中。如果正确创建目录结构将像
|-- formwidgets
|
|-- ActorBox.php
| `-- actorbox
| |-- assets
| | |-- css
| | | |-- actorbox.css
| | | `-- select2.min.css
| | `-- js
| | |-- actorbox.js
| | `-- select2.min.js
| `-- partials
| `-- _actorbox.htm
我是 October CMS 的新手,正在学习创建表单小部件。但我收到以下错误:
The partial '_field_actorbox.htm' is not found.
/opt/lampp/htdocs/octobermovies/modules/system/traits/ViewMaker.php line 65
我的小部件文件夹名称是 'formwidgets' 我在 partials 文件夹中的 partials 文件名为“_widget.htm” 我的表单小部件的内容 > Actorbox.php
namespace Watchlearn\Movies\FormWidgets;
use Backend\Classes\FormWidgetBase;
use Config;
class ActorBox extends FormWidgetBase
{
public function widgetDetails()
{
return [
'name' => 'Actorbox',
'description' => 'Field for adding actors'
];
}
public function render(){
return $this->makePartial('widget');
}
public function loadAssets()
{
$this->addCss('css/select2.css');
$this->addJs('js/select2.js');
}
}
我在 plugin.php
中注册小部件的代码public function registerFormWidgets()
{
return [
'Watchlearn\Movies\FormWidgets\ActorBox' => [
'label' => 'ActorBox Field',
'code' => 'actorbox'
]
];
}
我也尝试查找并查看文档,但找不到任何解决方案。
您是否使用 artisan 创建了表单小部件文件?
php artisan create:formwidget watchlearn\Movies Tagbox
(进入插件文件夹)
也许它会帮助您设置正确的权限并帮助您解决问题:) (它对我有用,我遇到了完全相同的问题)
我认为错误在于:
My widget folder name is 'formwidgets' My partials file name inside partials folder is '_widget.htm' Content of my formwidgets > Actorbox.php
但是你有
class ActorBox extends FormWidgetBase
而且您似乎在整个代码的其余部分都使用了那个 class 带有大写字母 B 的名称。
OctoberCMS 正在查找文件 formWidgets/ActorBox.php,与 registerFormWidgets 中给出的 classname 相匹配 函数。 FormWidget(以及 Component 和 Model 等)。php 文件名应始终与包含的 Widget(或任何大小写)class 名称 完全匹配 .
所以在这种情况下,表单小部件根本没有注册,因为没有找到具有匹配名称的文件。您正在使用的表单定义 .yaml 文件中的 type: actorbox
字段默认情况下会导致 October 查找要呈现的 _field_actorbox.htm
部分。
所以只需将您的 Actorbox.php 重命名为 ActorBox.php,我希望您的问题应该得到解决。
尝试检查文件的路径actorbox.php。我也遇到了同样的问题,我将 actorbox.php 移动到正确的路径然后一切正常。
Actorbox.php 应该在 formwidgets 路径中。如果正确创建目录结构将像
|-- formwidgets
|
|-- ActorBox.php
| `-- actorbox
| |-- assets
| | |-- css
| | | |-- actorbox.css
| | | `-- select2.min.css
| | `-- js
| | |-- actorbox.js
| | `-- select2.min.js
| `-- partials
| `-- _actorbox.htm