Mat*_*Mat 68 forms default symfony-forms symfony
我正在以下列方式创建表单:
$form = $this->createFormBuilder($breed)
->add('species', 'entity', array(
'class' => 'BFPEduBundle:Item',
'property' => 'name',
'query_builder' => function(ItemRepository $er){
return $er->createQueryBuilder('i')
->where("i.type = 'species'")
->orderBy('i.name', 'ASC');
}))
->add('breed', 'text', array('required'=>true))
->add('size', 'textarea', array('required' => false))
->getForm()
Run Code Online (Sandbox Code Playgroud)
如何为物种列表框设置默认值?
谢谢你的回复,我道歉,我想我应该重新解释一下我的问题.一旦我有一个从模型中检索的值,如何为物种选择列表中的相应值将该值设置为SELECTED ="yes"?
因此,TWIG视图中的选择选项输出将如下所示:
<option value="174" selected="yes">Dog</option>
Run Code Online (Sandbox Code Playgroud)
小智 110
您可以从"data"属性定义默认值.这是抽象"字段"类型的一部分(http://symfony.com/doc/2.0/reference/forms/types/field.html)
$form = $this->createFormBuilder()
->add('status', 'choice', array(
'choices' => array(
0 => 'Published',
1 => 'Draft'
),
'data' => 1
))
->getForm();
Run Code Online (Sandbox Code Playgroud)
在此示例中,"草稿"将设置为默认选定值.
Car*_*all 57
如果您使用Cristian的解决方案,则需要将其注入EntityManager到FormType类中.这是一个简化的例子:
class EntityType extends AbstractType{
public function __construct($em) {
$this->em = $em;
}
public function buildForm(FormBuilderInterface $builder, array $options){
$builder
->add('MyEntity', 'entity', array(
'class' => 'AcmeDemoBundle:Entity',
'property' => 'name',
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('e')
->orderBy('e.name', 'ASC');
},
'data' => $this->em->getReference("AcmeDemoBundle:Entity", 3)
));
}
}
Run Code Online (Sandbox Code Playgroud)
而你的控制器:
// ...
$form = $this->createForm(new EntityType($this->getDoctrine()->getManager()), $entity);
// ...
Run Code Online (Sandbox Code Playgroud)
方法EntityManager #getReference($ entityName,$ identifier)允许您获取对已知标识符的实体的引用,而无需从数据库中加载该实体.例如,当您想要与具有标识符的实体建立关联时,这可用作性能增强.
小智 23
解决方案:对于类型实体使用选项"data"但值是一个对象.即:
$em = $this->getDoctrine()->getEntityManager();
->add('sucursal', 'entity', array
(
'class' => 'TestGeneralBundle:Sucursal',
'property'=>'descripcion',
'label' => 'Sucursal',
'required' => false,
'data'=>$em->getReference("TestGeneralBundle:Sucursal",3)
))
Run Code Online (Sandbox Code Playgroud)
我认为你应该简单地使用$breed->setSpecies($species),例如在我的表格中我有:
$m = new Member();
$m->setBirthDate(new \DateTime);
$form = $this->createForm(new MemberType, $m);
Run Code Online (Sandbox Code Playgroud)
并将我的默认选择设置为当前日期.外部实体的工作方式应该相同......
如果你想传递 Doctrine 实体数组,请尝试这样的操作(Symfony 3.0+):
protected $entities;
protected $selectedEntities;
public function __construct($entities = null, $selectedEntities = null)
{
$this->entities = $entities;
$this->selectedEntities = $selectedEntities;
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('entities', 'entity', [
'class' => 'MyBundle:MyEntity',
'choices' => $this->entities,
'property' => 'id',
'multiple' => true,
'expanded' => true,
'data' => $this->selectedEntities,
]);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
139676 次 |
| 最近记录: |