OctoberCMS Builder插件后端下拉列表

时间:2017-05-26 06:18:49

标签: octobercms octobercms-backend octobercms-plugins

我想创建一个插件,在其中创建Posts,每个帖子属于1 Category

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

但是,我希望此类下拉列表中的选项取决于CategoryValuecategory.nameKey而非category.id的模型/models/Category.php在其中键入字符串。

请帮忙!感谢

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

我的关系设置如下:

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按钮或尝试修改Dropdown中的任何现有记录时,以下错误显示:

  

模型'插件\模型\帖子'不包含' category_id'的定义。

最终编辑:

总结未来遇到同样问题的其他人的一切,有两种方法可以解决问题

你可以

  1. 使用Relation窗口小部件并使用@Mittul At TechnoBrave提供的detailed solution here更改选项
  2. 或直接使用@dragontree
  3. 建议的解决方案中提供的git push小部件

1 个答案:

答案 0 :(得分:2)

define the dropdown options有几种方式。

但在这种情况下,听起来你应该使用relation widget代替正常的下拉菜单:

category:
    label: Category
    type: relation
    nameFrom: name 

PS。这还要求您在PostCategory模型中定义关系。但无论如何你应该这样做。

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