我正在使用Typo3 7.6并且我有三个对象:
class Order extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity{
/**
* email
* @var \string
*/
protected $email;
/**
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\Ophi\OphiOrder\Domain\Model\OrderItem>
*/
protected $orderItems = NULL;
}
class OrderItem extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity{
/**
* @var \Ophi\OphiOrder\Domain\Model\Item
*/
protected $$item;
/**
* @var \Ophi\OphiOrder\Domain\Model\Order
*/
protected $theorder;
/**
* @var \integer
*/
protected $amount;
}
class Item extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity{
/**
* title
*
* @var \string
*/
protected $title;
}
Order包含多个orderItems,其中包含一个金额,OrderItem包含title等属性。我现在要做的是创建一个正确处理这个嵌套对象的订单。
现在我的控制器有一个formAction和一个createAction。我将所有可能的项目{item}分配给我的formAction,我的表单如下所示:
<f:form action="create" object="{order}" objectName="order" id="orderform" enctype="multipart/form-data">
<f:form.textfield required="1" property="email" type="text" name="email" />
<f:for each="{items}" as="item">
<f:form.textfield property="orderItems.{item.uid}.amount" type="number" name="orderItems[{item}][amount]" value=""/>
</f:for>
</f:form>
当我在createAction中调试$ order时,orderItems在那里并且设置了amount,但是对于每个orderItem,item属性为空。我错过了什么,我在哪里做错了?有任何想法吗?
答案 0 :(得分:0)
这是可以预料到的,因为没有什么可以将反向引用从OrderItem
神奇地设置为Order
。但你实际上并不需要这个。下次加载持久性Order
对象时,其所有项目也将加载该反向引用。如果您在create
操作中不需要此操作,请不要担心这一点。
答案 1 :(得分:0)
您的OrderItem
类中的item属性似乎有拼写错误。请尝试删除$
protected $$item;