October CMS:无法创建表单小部件

4

我是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' 我的formwidgets > 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'
            ]
        ];
    }

我尝试查找并查看了文档,但没有找到任何解决方案。


使用 _块注释_(在内容前加上 >)来引用长引语/错误消息。 - greybeard
@老程序员,感谢您的建议。您有什么解决我发布的问题的方法吗? - pkdq
4个回答

6
Actorbox.php应该放在formwidgets路径中。如果正确创建,目录结构应该像这样。
|-- formwidgets
|  
|-- ActorBox.php
|   `-- actorbox
|       |-- assets
|       |   |-- css
|       |   |   |-- actorbox.css
|       |   |   `-- select2.min.css
|       |   `-- js
|       |       |-- actorbox.js
|       |       `-- select2.min.js
|       `-- partials
|           `-- _actorbox.htm

这正是我的问题。我将表单小部件文件放在了小部件名称子目录中。 - Mike

1

你是否使用artisan创建了你的formwidget文件?

php artisan create:formwidget watchlearn\Movies Tagbox(在插件文件夹中)

也许这可以帮助你设置正确的权限并帮助你解决问题 :)(对我有用,我遇到了完全相同的问题)


1
我认为错误在这里: 我的小部件文件夹名称是'formwidgets',我的partials文件名在partials文件夹中是'_widget.htm',我的formwidgets内容> Actorbox.php的内容。 但是你有 类ActorBox扩展FormWidgetBase 并且您似乎在其余代码中始终使用具有大写B的类名。 OctoberCMS正在寻找与registerFormWidgets函数中给定的类名匹配的文件formWidgets/ActorBox.php。 FormWidget(和Component和Model等).php文件名应始终与包含的Widget(或任何其他情况)类名完全相同。在这种情况下,表单小部件未注册,因为找不到匹配名称的文件。然后,您正在使用表单定义.yaml文件中的type:actorbox字段默认导致October查找要呈现的_field_actorbox.htm局部文件。
所以,只需将您的 Actorbox.php 重命名为 ActorBox.php,您的问题就应该得到解决了,希望如此。

1
是的,文件名不符合十月规范。文件名需要与类名完全匹配。https://octobercms.com/help/guidelines/developer#class-naming - Tschallacka

1

请检查您的文件actorbox.php的路径。我也遇到了同样的问题,我将我的actorbox.php移动到正确的路径,然后一切正常。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接