OctoberCMS Builder 插件后端下拉菜单

标签 octobercms octobercms-backend octobercms-plugins

我想创建一个插件来创建帖子,每个帖子属于1个类别

后端有一个下拉菜单,您可以在创建帖子时选择帖子所属的类别。

但是,我希望此类下拉列表中的选项取决于模型 Category,其中 Valuecategory.namecategory.id,而不是我在其中输入字符串。

请帮忙!谢谢

感谢 Dragontree 的建议:这是我的第一次编辑:

我已经将我的关系设置如下:

/models/Category.php

public $hasMany = [
    'posts' => ['stephenli\plugin\Models\Posts']
];

/models/Post.php

public $belongsTo = [
    'category' => ['stephenli\plugin\Models\Category', 'key' => 'category_id']
];       /* I tried with or without  'key' => 'category_id'*/

并在Builder插件中使用关系小部件,

/models/post/field.yaml

category_id:
    label: 'stephenli.postgod::lang.plugin.categorypick_label'
    oc.commentPosition: ''
    nameFrom: name
    descriptionFrom: description
    emptyOption: 'No categories found'
    span: auto
    type: relation

/models/post/columns.yaml 中的位置

category_id:
    label: 'stephenli.plugin::lang.plugin.categorypick_label'
    type: text
    searchable: true
    sortable: true

当我访问我的 Post 插件并单击 Create 按钮或尝试修改 list 中的任何现有记录时,显示以下错误:

Model 'plugin\Models\Post' does not contain a definition for 'category_id'.

最终编辑:

总结一下,对于将来遇到同样问题的其他人来说,有两种方法可以解决问题

您可以

  1. 使用 Dropdown 小部件并使用 detailed solution here 更改选项由 @Mittul 在 TechnoBrave 提供
  2. 或者直接使用 @dragontree 建议的解决方案中提供的 Relation 小部件

最佳答案

有多种方法可以define the dropdown options .

但在这种情况下,听起来您应该使用关系 widget相反,在正常的下拉菜单上:

category:
    label: Category
    type: relation
    nameFrom: name 
PS。这还要求您定义 PostCategory 模型中的关系。但无论如何你都应该这样做。

还值得注意的是,字段名称(在 fields.yaml 中)应与关系的名称匹配。

关于OctoberCMS Builder 插件后端下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44194884/

相关文章:

php - Eloquent ORM - 模型关系

OctoberCMS:在一个 API 端点中设置多个模型

php - OctoberCMS 带星号的必需但依赖字段的验证问题

octobercms - OctoberCMS中的用户表继承

javascript - 通过 octobercms 后端通过 javascript 启动弹出窗口

octobercms - 十月 CMS - 自定义字段

javascript - 十月 CMS AJAX 操作 - 插件