在TCA中使用多个foreign_table

时间:2014-12-18 14:48:41

标签: select typo3-6.2.x

如何在TCA中实现以下选择用例:

我在产品扩展中有不同的产品表(窗口,门,...)。我还有一个引用扩展,其中每个引用项应包含使用过的产品。我在参考TCA中配置了TCA选择。但是我无法将这些多个表的产品放到选择框中。是否可以在一个选择框中包含所有窗户和所有门项目?

    'products' => Array (
    'label' => 'Verwendete Produkte: ',
        'config' => Array (
            'type' => 'select',
            'foreign_table' => 'tx_products_windows',
            'foreign_table_where' => ' AND tx_products_windows.sys_language_uid IN (-1,0)',
            'size' => 5,
            'minitems' => 0,
            'maxitems' => 99,
        )
    ),

1 个答案:

答案 0 :(得分:3)

不,在select类型中不可能,至少没有记录。

无论如何,您可以使用internal_type = db来实现所需的group类型 - (最好使用建议向导

'products' => array(
    'label' => 'Verwendete Produkte',
    'l10n_mode' => 'exclude',
    'config' => array(
        'type' => 'group',
        'internal_type' => 'db',
        'allowed' => 'tx_products_windows,tx_products_doors',
        'MM' => 'tx_products_products_mm',
        'show_thumbs' => 1,
        'size' => 5,
        'minitems' => 0,
        'maxitems' => 9999,
    ),
),

并使用包含表名字段的典型MM表:

CREATE TABLE tx_foo_bar_mm (
    uid_local int(11) unsigned DEFAULT '0' NOT NULL,
    uid_foreign int(11) unsigned DEFAULT '0' NOT NULL,
    sorting int(11) unsigned DEFAULT '0' NOT NULL,
    sorting_foreign int(11) unsigned DEFAULT '0' NOT NULL,
    tablenames varchar(255) DEFAULT '' NOT NULL,

    KEY uid_local (uid_local),
    KEY uid_foreign (uid_foreign),
    KEY tablenames (tablenames)
);

另一件事是,对于Extbase,您需要手动创建自定义getter和处理项 (只需找到它们并存储在数组中以保持顺序)。