【问题标题】:October CMS : Not able to create a Form Widget十月 CMS:无法创建表单小部件
【发布时间】:2017-03-22 11:56:33
【问题描述】:

我是十月 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'
            ]
        ];
    }

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

【问题讨论】:

  • 使用块注释(在内容之前加上> )来获取较长的引号/错误消息。
  • @greybeard 谢谢你的建议。你有什么可以解决我发布的问题吗?

标签: php octobercms


【解决方案1】:

Actorbox.php 应该在 formwidgets 路径中。如果正确创建目录结构会像

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

【讨论】:

  • 这正是我的问题。我将表单小部件文件放在小部件的名称子目录中。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    我认为错误在这里:

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

    但是你有

    ActorBox 扩展 FormWidgetBase

    并且您似乎在整个代码的其余部分都使用带有大写 B 的类名。

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

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

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

    【讨论】:

    【解决方案4】:

    您是否使用 artisan 创建了表单小部件文件?

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

    也许它会帮助您设置正确的权限并帮助您:) (对我来说确实如此,我遇到了完全相同的问题)

    【讨论】:

      猜你喜欢
      • 2016-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-28
      • 2020-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多