我有一个扩展程序和一个前端表单来创建和更新元素。用户可以创建带有多个日期的发票,这些日期存储为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:在属性路径“文件”处进行属性映射时发生异常:PHP警告:spl_object_hash()期望参数1为对象,在/usr/share/typo3/typo3_src-7.6.2/typo3/sysext/中给定null extbase / Classes / Persistence / ObjectStorage.php第155行=
文档页面上用enctype="multipart/form-data"
标记的表单解决方案无效。
有什么办法可以解决这个问题吗?
答案 0 :(得分:0)
检查为以下复选框生成的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}
变量为null。尝试使用<f:debug>{key}</f:debug>
来检查它是否为空。
更新
添加您的setter参数setTermine(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $temines = null)
答案 1 :(得分:0)
我现在可以通过取消初始化initializeAction中的空值来解决它:
foreach($args['rechnungen']['termine'] as $key => $value) {
if (intval($value) === 0) {
unset($args['rechnungen']['termine'][$key]);
}
}