与1个MM表相关的多个MM选择

时间:2018-07-02 07:49:42

标签: typo3

我目前遇到一个问题,我试图使它出现,因此Typo3表单具有多个可以选择相同MM表的多选字段。用户保存表单时,仅会保存最后一个多选字段中的信息,从而导致前一个多选字段为空。下面是我目前所拥有的(用占位符代替实际的表名等):

'[FIELD A]' => array(
    'exclude' => 1,
    'label' => '[FIELD A]',
    'config' => array(
        'type' => 'select',
        'foreign_table' => '[FOREIGN TABLE]',
        'foreign_table_where' => ' AND category = "CAT1"',
        'size' => 10,
        'minitems' => 0,
        'maxitems' => 99
    )
),
'[FIELD B]' => array(
    'exclude' => 1,
    'label' => '[FIELD B]',
    'config' => array(
        'type' => 'select',
        'foreign_table' => '[FOREIGN TABLE]',
        'MM' => '[MM TABLE]',
        'foreign_table_where' => ' AND category = "CAT2"',
        'size' => 10,
        'minitems' => 0,
        'maxitems' => 99
    )
),
'[FIELD C]' => array(
    'exclude' => 1,
    'label' => '[FIELD C]',
    'config' => array(
        'type' => 'select',
        'foreign_table' => '[FOREIGN TABLE]',
        'MM' => '[MM TABLE]',
        'foreign_table_where' => ' AND category = "CAT3"',
        'size' => 10,
        'minitems' => 0,
        'maxitems' => 99
    )
),
'[FIELD D]' => array(
    'exclude' => 1,
    'label' => '[FIELD D]',
    'config' => array(
        'type' => 'select',
        'foreign_table' => '[FOREIGN TABLE]',
        'MM' => '[MM TABLE]',
        'foreign_table_where' => ' AND category = "CAT4"',
        'size' => 10,
        'minitems' => 0,
        'maxitems' => 99
    )
),

详细地说,当我保存Typo3表单时,仅保存[FIELD D]中的信息,而其他3个字段中的所有现有数据都将被删除。我需要它,以便保存所有字段中的数据。

有什么想法吗?

欢呼

1 个答案:

答案 0 :(得分:1)

您的MM表的问题在于DataHandler不接受多个字段的MM表,因为它需要更多信息。您应该在MM表中添加字段“ fieldname”:

fieldname varchar(255) DEFAULT '' NOT NULL,

然后在每个字段的配置中添加一个配置,以使DataHandler知道在每个MM记录关系中存储哪个字段名称。 FIELD A的示例:

'[FIELD A]' => [
    'exclude' => 1,
    'label' => '[FIELD A]',
    'config' => [
        'type' => 'select',
        'foreign_table' => '[FOREIGN TABLE]',
        'MM' => '[MM TABLE]',
        'MM_match_fields' => [
            'fieldname' => 'FIELD A'
        ],
        'size' => 10,
        'minitems' => 0,
        'maxitems' => 99
    ]
],

通过这种方式,您还可以在记录关系的“表名”中添加一个附加字段。这样,您也可以将一个MM表用于多个表。 签出相同的表sys_category_record_mm。