我想创建一个插件,在哪里创建 Posts
,每个帖子属于1 Category
.
并且后端有一个下拉菜单,您可以在创建帖子时选择帖子所属的类别 .
但是,我希望这种下拉列表中的选项取决于模型 Category
,其中 Value
是 category.name
而 Key
是 category.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
中的任何现有记录时,以下错误显示:
模型'plugin \ Models \ Post'不包含'category_id'的定义 .
最终编辑:
为了总结未来遇到同样问题的其他人的一切,有两种方法可以解决这个问题
你也可以
-
使用
Dropdown
小部件并使用_Mittul提供的detailed solution here更改选项At TechnoBrave -
或直接使用@dragontree建议的解决方案中提供的
Relation
小部件
1 回答
define the dropdown options有几种方法 .
但在这种情况下,听起来你应该使用
relation
widget而不是正常的下拉菜单:PS . 这还要求您在
Post
和Category
模型中定义关系 . 但无论如何你应该这样做 .还值得注意的是,字段名称(在fields.yaml中)应该与关系的名称匹配 .