在OctoberCMS中,是否可以使类型:tagList取决于类型:下拉表单字段?

时间:2019-02-09 12:22:23

标签: octobercms

在OctoberCMS中,您可以很容易地根据另一个下拉列表创建一个下拉列表。但是,我找不到使下拉列表依赖于tagList表单字段的解决方案。

例如,我在后端表单上具有以下字段:

-Subject
-Category
-Tags

我在数据库中有以下表格:

-subjects(subject_id, subject, category_id)
-categories(category_id, category)
-tags(tag_id, tag)
-categories_tags(category_id, tag_id) pivot table
-subject_tags(subject_id, tag_id) pivot table

我想基于从同一表格的下拉列表中选择的类别填充tagList标记选择器。就像我选择摄影类别并获得摄影分配的标签一样。

有可能在十月这样做吗?

我应该使用什么模型和关系来实现这一目标?

1 个答案:

答案 0 :(得分:0)

当然可以。我使用的方法如下。

  1. 将dependsOn添加到依赖于类别中的字段 field.yaml文件(类似于下拉菜单)。我的fields.yaml文件 屏幕截图已附在这里。

    enter image description here

  2. 然后按正常使用方式创建getYOUR_FIELDOptions()方法 标签列表。

  3. 使用以下格式创建查询,并将其作为上述方法的返回值返回

    Service :: whereIn('category',explode(',',$ this-> categories))     -> orderBy('id')     -> lists('title','id');

    • 服务-您的模型

    • $ this->类别-取决于字段名称

    • lists('title','id')-将应显示在 将taglist作为第一个参数,然后将下一个字段用作 钥匙。这种方法对我来说非常有效。

    完整方法:

    import { Selector } from 'testcafe';
    
    fixture `New Fixture`
        .page `google.com`;
    
    test('New Test', async t => {
        await t
            .click(Selector('#tsf').find('[name="q"]'))
            .typeText(Selector('#tsf').find('[name="q"]'), 'testcafe')
            .pressKey('enter');
    
        await t.expect(Selector('.LC20lb').count).eql(10);
    
    
        function fn (title) {
            return Selector('.LC20lb').filter((node, idx) => {
                return node.textContent.includes(title);
            }, { title }); // dependencies parameter
        }
    
        await t.expect(fn('TestCafe').count).gt(1);
    });