2016-04-30 47 views
0

我有一个实体的代码通过的ArrayCollection使用:如何设置存储值在buildForm实体功能(Symfony2的)

public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder->add('imageFile',VichImageType::class, array(
      'label' => false, 
      'required'  => false, 
      'allow_delete' => true, // not mandatory, default is true 
      'download_link' => true, // not mandatory, default is true 
     )); 
     $builder->add('weight','hidden',array(
      'attr' => array(
       //'value' =>'__name__', 
       'class' => 'weight' 
      ) 
     )); 
    } 

当buildForm被称为一个“新的行动”我想的是, “默认值”被设置为“名称”。但如果我分解线

//'value' =>'__name__', 

此设置也是为“编辑操作”。

如何访问此“条目”的“存储”值以检查“我正处于”新操作“还是”编辑操作“?

回答

1

来设置实体默认值最简单的方法/文档是实体类:

/** 
* @ORM\Column(type="string") 
*/ 
protected $weight = 'name'; 

empty_data应在表单生成工作:

$builder->add('weight','hidden',array(
     'empty_data' => 'name', 
     'attr' => array(
      'class' => 'weight' 
     ) 
    )); 
0

如何访问到这个“条目”的“存储”值检查如果我是 在“新行动”或“编辑行动”?

你应该分离行动以知道什么是确切的上下文。

否则,您可以使用表单模型数据来检查实体的id属性以获取操作的上下文。然后你可以用表单事件修改表单。

参考文献:

http://symfony.com/doc/current/cookbook/form/dynamic_form_modification.html http://symfony.com/doc/current/components/form/form_events.html

0

ü可以设置通过

->add('myfield', 'text', array(
    'label' => 'Field', 
    'data' => 'Default value' 
)) 

->add('myfield', 'text', array(
'label' => 'Field', 
'choices' => array() 

)默认值) 通过一个数组(前为下拉菜单) ,全部最好