Обновление TYPO3 8.7 с дочерними элементами m: n не работает

У меня есть расширение и форма внешнего интерфейса для создания и обновления элементов. Пользователь может создать счет-фактуру с несколькими датами, которые хранятся в виде m: n записей.

Создание счета-фактуры и дат работает с:

<f:form.checkbox name="newRechnungen[termine][]" value="{termin.uid}" />

Но если я редактирую счет и отправляю форму, я получаю ошибки:

<f:form.checkbox name="rechnungen[termine][]" value="{termin.uid}" />

показывает ошибку типа:

Поле формы "[items] [] []" недействительно. Причина: "[]" используется не как последний аргумент, а где-то посередине (например, foo [] [bar])

изменение тега, как описано для решения, на

<f:form.checkbox name="rechnungen[termine][{key}]" value="{termin.uid}" />

показывает ошибку:

# 1297759968: Исключение при сопоставлении свойств в пути к свойствам "files": Предупреждение PHP: spl_object_hash () ожидает, что параметр 1 будет объектом, значение null задано в /usr/share/typo3/typo3_src-7.6.2/typo3/sysext/extbase/Classes /Persistence/ObjectStorage.php строка 155 =

Решение, описанное на странице документации с enctype="multipart/form-data" для тега формы, не работает.

Есть идеи, как я могу это решить?


person matin    schedule 26.06.2018    source источник


Ответы (2)


Я мог бы решить эту проблему сейчас, отключив пустые значения в initializeUpdateAction:

foreach($args['rechnungen']['termine'] as $key => $value) {
        if (intval($value) === 0) {
            unset($args['rechnungen']['termine'][$key]);
        }
    }
person matin    schedule 26.06.2018

Убедитесь, что сгенерированный HTML-код для флажка ниже имеет правильный формат.

<f:form.checkbox name="rechnungen[termine][{key}]" value="{termin.uid}" />

В вашем HTML-коде должно быть что-то вроде этого: <input type="checkbox" name="tx_yourext_plugin[rechnungen][termine][1] value="__your value__" />

Такое имя tx_yourext_plugin[rechnungen][termine][] не подойдет.

По указанной выше ошибке я могу сказать, что ваша переменная {key} равна нулю. Попробуйте <f:debug>{key}</f:debug>, чтобы проверить, равно ли оно нулю.

ОБНОВЛЕНИЕ

Добавьте в свой установщик параметр setTermine(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $temines = null)

person Andrei Todorut    schedule 26.06.2018
comment
‹Input class = tocheck id = check_162 name = tx_xxx_xxx [rechnungen] [termine] [1] value = 162 type = checkbox› это html-код на странице и возникает ошибка. все флажки отправлены - также флажки, которые не отмечены ... поэтому я не понимаю, почему они отправлены ... это выводится в initialiceUpdateAction в контроллере: - person matin; 26.06.2018
comment
Массив ([действие] = ›update [controller] =› Xxxxxx [rechnungen] = ›Массив ([__identity] =› 41 [termine] = ›Массив ([0] =› [1] = ›[2] =› [ 3] = ›136 [4] =›))) - person matin; 26.06.2018
comment
проблема в том, что typo3 добавляет каждому флажку скрытое поле с пустым значением. это вызывает ошибку - person matin; 26.06.2018
comment
ааа, я помню, что у меня была такая же проблема - person Andrei Todorut; 26.06.2018