我正在尝试根据这本食谱将表单集合嵌入其中:http://symfony.com/doc/current/cookbook/form/form_collections.html
我有以下数据库shcema:product ---< POS快捷方式> --- POS项目
控制器中的我是这样的初始形式:
$pos = new PosList();
for ($i=0;$i<10 ;$i++ ) {
$scut1 = new PosShortcut();
$pos->addPosShortcut($scut1);
}
$form = $this->createForm(new PosListType(), $pos);
然后我有POSShortcut的表格:
$builder
->add('posList','hidden')
->add('product','entity',array(
'required'=>false,
'empty_value'=>'Choose product...',
'label'=>'Shordcut product',
'class'=>'StockBundle:Product',
'property'=>'name'
));
当然主要形式,包括PosShortcut形式:
<...>
->add('posShortcut','collection',array('type'=>new PosShortcutType()))
<...>
现在的问题是,对于POS快捷方式项,当POSList id写入数据库时,它被设置为NULL。原因很简单,我在第一时间在控制器中创建它时没有为新快捷方式设置PosList值。但问题是我不能在这种状态下这样做,因为POS项目在数据库中还不存在。
如何解决这个问题?
答案 0 :(得分:1)
class PosList
{
public function addPosShortcut($shortcut)
{
$this->shortcuts->add($shortcut);
$shortcut->setPosList($this); // *** This will link the objects ***
}
学说2将负责其余的事情。您应该知道所有10个快捷方式将始终发布。