sonata_type_collection:从当前实体实例设置默认字段值

Sir*_*ato 7 symfony sonata-admin sonata

我需要" sonata_type_collection "的帮助:有没有办法为" sonata_type_collection "特定字段定义默认值(这里:现有实体的实例)?或者也许是一种给他参数的方法?

让我澄清一下:这是我实际呈现的" sonata_type_collection "表单的截图:

在此输入图像描述

是否有任何方法可以使" 机器 "字段保持我正在编辑的" MachineInfo "实体的当前实例,而不是单击(最后一个)" 添加 "时添加 " 无选择 "文本 "按钮?

这是我目前来自" MachineInfoAdmin "的'configureFormFields' :

protected function configureFormFields(FormMapper $formMapper)
{
    $formMapper
        ->add('name', 'text', array('label' => 'Nom'))
        ->add('description', 'text', array('label' => 'Description'))
        ->add('internalReference', 'text', array('label' => 'Référence interne'))
    ;

    //Already instantiated
    if ($this->id($this->getSubject())) {
        $formMapper
            ->add(
                'machineParts',
                'sonata_type_collection',
                array(
                    'label'     => "Pièces",
                ),
                array(
                    'edit' => 'inline',
                    'inline' => 'table',
                    'sortable'  => 'position',
                )
            )
        ;
   }
}
Run Code Online (Sandbox Code Playgroud)

我真的很喜欢那个,我希望救世主可以提供我的知识来帮助我(_ _)m

Sir*_*ato 6

我找到了解决方案,这很简单,我很惭愧= __ ="我忘了在新实例化的MachinePart中设置对MachineInfo的引用

public function addMachinePart(MachinePartsInfo $machineParts) {
    $machineParts->setMachineInfo($this); //Missed this line
    $this->machineParts[] = $machineParts;

    return $this;
}
Run Code Online (Sandbox Code Playgroud)

我希望这可以帮助将来的人:)