У меня есть действие контроллера, которое принимает 3 параметра: 1-я построена из Fluid-формы, 2 других создаются в initialize*()
действии и предоставлены для запроса.
protected function initializeCombinedAction()
{
// creation of ObjectStorage's $firstList and $secondList
$this->request->setArgument('firstList', $firstList);
$this->request->setArgument('secondList', $secondList);
}
/**
*
* @param \Vendor\Ext\Domain\Model\MyModel $mymodel
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\Vendor\Ext\Domain\Model\SubModel> $firstList
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\Vendor\Ext\Domain\Model\SubModel> $secondList
*/
public function combinedAction(Model\MyModel $mymodel, $firstList, $secondList)
{
// some code here
}
$firstList
и $secondList
созданы как массивы, как если бы они были предоставлены в запросе. PropertyMapper
распознает их и правильно отображает, в результате в качестве аргументов действия доступны два экземпляра для хранения ObjectStorage
: SubModel
.
Но проблема в том, что проверка SubModel
не производится. С 1-м аргументом валидаторы выполняются, но не для 2-го и 3-го.
Должен ли я как-то явно определить такую проверку?
Благодарим вас за этот пункт. Я думал, что объекты ObjectStorage должны быть проверены из-за рекурсивной проверки в Extbase, потому что объект MyModel содержит список 'SubModel', также связанных с ObjectStorage, и в этом случае они проверяются. Я попытался добавить 4-й параметр типа «MyModel» таким же образом, как и добавление 2-го и 3-го и его валидатор, а также проверки его свойств. Таким образом, проблема действительно в проверке аргументов типа ObjectStorage. –