在octobercms后端表单上仅显示parent_id名称

时间:2018-02-02 19:57:03

标签: octobercms octobercms-plugins octobercms-backend

我使用嵌套树使用位置并使用" parent"字段选择父位置(我使用重新排序记录创建)。但我需要"父母"字段只显示父母,只有parent_id等于NULL的位置。

在位置模型fields.yaml我有:

 fields:
    name:
        label: Name
        oc.commentPosition: ''
        span: left
        required: 1
        type: text
    slug:
        label: Slug
        oc.commentPosition: ''
        span: right
        required: 1
        preset:
            field: name
            type: slug
        type: text
    parent:
        label: Parent Location
        oc.commentPosition: ''
        nameFrom: name
        descriptionFrom: description
        span: left
        type: relation
        placeholder: 'select parent location'
    description:
        label: Description
        size: large
        oc.commentPosition: ''
        span: right
        type: textarea

但现在我在后端字段" parent"上获得所有位置。有没有办法只获得父母的位置?

表架构:

条目:

            $table->engine = 'InnoDB';
            $table->increments('id')->unsigned();
            $table->integer('user_id')->nullable()->unsigned();
            $table->string('name')->nullable();
            $table->string('slug');
            $table->text('content')->nullable();
            $table->integer('location_id')->nullable();
            $table->timestamp('published_at')->nullable();
            $table->boolean('published')->default(0);
            $table->timestamp('created_at')->nullable();
            $table->timestamp('updated_at')->nullable();

位置:

        $table->engine = 'InnoDB';
        $table->increments('id')->unsigned();
        $table->string('name')->nullable();
        $table->string('slug')->nullable();
        $table->text('description')->nullable();
        $table->integer('parent_id')->nullable()->unsigned();
        $table->integer('nest_left')->nullable();
        $table->integer('nest_right')->nullable();
        $table->integer('nest_depth')->nullable();
        $table->timestamp('created_at')->nullable();
        $table->timestamp('updated_at')->nullable();

1 个答案:

答案 0 :(得分:0)

嗯,我不确定我们可以通过relation widget传递条件并制作filtered list from database,而是建议手动使用{{1获得更多控制权的方式。

为此,请将drop-down中的关系字段parent更改为configuration(因为这将是您的数据库字段)

新配置将如下所示

parent_id

现在,在您的位置模型中,您需要提供来源

parent_id:
    label: Parent Location
    oc.commentPosition: ''
    span: left
    type: dropdown
    placeholder: 'select parent location'

这将返回public function getParentIdOptions(){ return \Locations::->whereNull('parent_id')->lists('name', 'id'); } ID,名称密钥=>值对),其中array of location IS NULL 或您的自定义条件。

如果您遇到任何问题,请尝试此操作,请发表评论。