#typo3 #extbase #typo3-9.x
#typo3 #extbase #typo3-9.x
Вопрос:
Как мне указать внешние таблицы для атрибутов, определенных в подклассах, при использовании наследования одной таблицы в Typo3 9.5?
У меня есть наследование класса, определенное в ext_typoscript_setup.txt:
config.tx_extbase.persistance.classes {
MyProjectBase { mapping {
tablename = tx_myproject_base
subclasses = {
1 = MyProjectDerived
}
}}
MyProjectDerived { mapping {
tablename = tx_myproject_base
recordType = 1
columns = {
choice.mapOnProperty = selection
}
}}
MyProjectChoice { mapping {
tablename = tx_myproject_choice
}}
}
В Configuration/TCA/tx_myproject_base.php , У меня есть
return [
'ctrl' => ['type' => 'subclass'],
'columns' => [
// some fields of the base type
// and now the fields of the derived type
'choice' => [
'config' => [
'type' => 'select',
'foreign_table' => tx_myproject_choice,
'size' => 1,
'minitems' => 0, 'maxitems' => 1,
'renderType' => 'selectSingle',
]
]]
];
Таким образом, производные объекты имеют внешний ключ для выбора, называемый choice в базе данных и selection в php.
Когда я выполняю setOrderings(‘selection.ranking’=> ПО УБЫВАНИЮ) в контроллере, я получаю сообщение об ошибке
The relation information for property "selection" of class "MyProjectDerived" is missing.
В выводе отладки я вижу, что поле правильно сопоставлено с полем выбора, но информация foreign_table отсутствует.
Я предполагаю, что проблема в том, что у меня есть конфигурация TCA для подкласса в файле PHP для базовой таблицы, но я не знаю, как это исправить.
Как я могу заставить Extbase понять, что поле подтипа является ключом к внешней модели?
Комментарии:
1. вы можете указать ключ к вашей модели домена. В вашей модели домена вы можете добавить поле «выбор» с типом inline, если оно равно 1: n. Если это m: n, тогда используйте select
2. Вы правы. На самом деле у меня есть такая конфигурация ‘type’ как ‘select’, и я соответствующим образом обновил статью.
3. Должен ли я добавить это в качестве ответа для будущих разработчиков? Это сработало для вас?
4. Нет. На самом деле у меня все время была такая конфигурация, я просто удалил ее для публикации. Это все еще не работает.