2

我想创建一个插件在哪里创建Posts,每个帖子都属于1 Category

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

但是,我希望此类下拉列表中的选项取决于is和isCategory所在的模型,而不是我在其中键入字符串。Valuecategory.nameKeycategory.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”的定义。

最终编辑:

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

你可以

  1. 使用小部件并通过@Mittul At TechnoBrave 提供的详细解决方案Dropdown更改选项
  2. 或者直接使用Relation@dragontree 建议的解决方案中提供的小部件
4

1 回答 1

2

有几种方法可以定义下拉选项

但在这种情况下,听起来您应该在普通下拉列表中使用relation 小部件:

category:
    label: Category
    type: relation
    nameFrom: name 

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

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

于 2017-05-26T07:18:42.627 回答