首页 文章

OctoberCMS Builder插件后端下拉列表

提问于
浏览
1

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

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

但是,我希望这种下拉列表中的选项取决于模型 Category ,其中 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'的定义 .

最终编辑:

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

你也可以

  • 使用 Dropdown 小部件并使用_Mittul提供的detailed solution here更改选项At TechnoBrave

  • 或直接使用@dragontree建议的解决方案中提供的 Relation 小部件

1 回答

  • 1

    define the dropdown options有几种方法 .

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

    category:
        label: Category
        type: relation
        nameFrom: name
    

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

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

相关问题