十月CMS:无法创建表单小组件

时间:2016-11-08 18:27:30

标签: php octobercms

我是十月CMS的新手并且正在学习创建一个Form Widget。但我收到以下错误:

The partial '_field_actorbox.htm' is not found.
/opt/lampp/htdocs/octobermovies/modules/system/traits/ViewMaker.php line 65

我的小部件文件夹名称是' formwidgets' 我在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'
            ]
        ];
    }

我试图找到并查看文档,但找不到任何解决方案。

4 个答案:

答案 0 :(得分:4)

Actorbox.php应该在formwidgets路径中。如果创建正确,dir结构将像

|-- formwidgets
|  
|-- ActorBox.php
|   `-- actorbox
|       |-- assets
|       |   |-- css
|       |   |   |-- actorbox.css
|       |   |   `-- select2.min.css
|       |   `-- js
|       |       |-- actorbox.js
|       |       `-- select2.min.js
|       `-- partials
|           `-- _actorbox.htm

答案 1 :(得分:1)

你是否使用工匠创建了formwidget文件?

php artisan create:formwidget watchlearn\Movies Tagbox(进入插件文件夹)

也许它会帮助您设置正确的权限并帮助您:) (这对我来说,我有完全相同的问题)

答案 2 :(得分:1)

我认为错误在于:

  

我的小部件文件夹名称是' formwidgets'我在partials文件夹中的部分文件名是' _widget.htm'我的formwidgets的内容>的 Actorbox.php

但是你有

  

class ActorBox 扩展了FormWidgetBase

并且您似乎在其余代码中使用了大写字母B的类名。

OctoberCMS正在寻找文件 formWidgets / ActorBox.php ,匹配 registerFormWidgets 函数中给出的类名。 FormWidget(以及Component和Model等).php文件名应始终与包含的Widget(或任何情况)类名匹配完全相同的

因此,在这种情况下,表单窗口小部件根本没有注册,因为找不到具有匹配名称的文件。默认情况下,您正在使用的表单定义.yaml文件中的type: actorbox字段会导致10月要查找要呈现的_field_actorbox.htm部分。

所以,只需将您的 Actorbox.php 重命名为 ActorBox.php ,我希望您的问题应该得到解决。

答案 3 :(得分:1)

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