我目前遇到一个问题,我试图使它出现,因此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个字段中的所有现有数据都将被删除。我需要它,以便保存所有字段中的数据。
有什么想法吗?
欢呼
答案 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。