Обновление TYPO3 8.7 с дочерними элементами m: n не работает - PullRequest
0 голосов
/ 26 июня 2018

У меня есть расширение и форма интерфейса для создания и обновления элементов.Пользователь может создать счет-фактуру с несколькими датами, которые хранятся в виде записей 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" для тега формы, не работает.

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

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

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

foreach($args['rechnungen']['termine'] as $key => $value) {
        if (intval($value) === 0) {
            unset($args['rechnungen']['termine'][$key]);
        }
    }
0 голосов
/ 26 июня 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)

...