我想创建一个插件,在其中创建Posts
,每个帖子属于1 Category
。
后端有一个下拉菜单,您可以在创建帖子时选择帖子所属的类别。
但是,我希望此类下拉列表中的选项取决于Category
为Value
而category.name
为Key
而非category.id
的模型/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
按钮或尝试修改Dropdown
中的任何现有记录时,以下错误显示:
模型'插件\模型\帖子'不包含' category_id'的定义。
总结未来遇到同样问题的其他人的一切,有两种方法可以解决问题
你可以
Relation
窗口小部件并使用@Mittul At TechnoBrave提供的detailed solution here更改选项git push
小部件
醇>
答案 0 :(得分:2)
define the dropdown options有几种方式。
但在这种情况下,听起来你应该使用relation
widget代替正常的下拉菜单:
category:
label: Category
type: relation
nameFrom: name
PS。这还要求您在Post
和Category
模型中定义关系。但无论如何你应该这样做。
值得注意的是,字段名称(在fields.yaml中)应该与关系的名称匹配。