我正在使用表单类来构建项目中的各种表单。
在实体类型文件中,对于buildForm函数,有一个名为“array $options”的次要参数(这在官方Symfony 2文档中显示,但从未提到过!)
我已经在控制器中将一个数组传递给了createForm函数,但现在我完全不知道如何检索存储的值?
$form = $this->createForm(new ProductType(array(), array('id' => '2')), $product);
我发现获取选项的唯一方法是使用getOption()函数,但在Symfony 2中不存在(我找到的文章来自2010年)。
我尝试使用:
$id = $options['id'];
但是当我试图在任何地方使用 $id 时,我会收到以下错误提示:
注意:未定义索引:id
怎么回事?
我该如何从 $options 数组中检索我的值?我第一次是否正确设置了它们?
编辑-更多代码:
表单类
<?php
namespace DEMO\DemoBundle\Form\Product;
use Doctrine\ORM\EntityRepository;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;
class ProductType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('name')
->add('slug')
->add('reference')
->add('description')
->add('active_from')
->add('active_till')
->add('is_active')
->add('category', 'entity', array(
'class' => 'DEMO\DemoBundle\Entity\Product\ProductCategory',
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('u')
->where('u.section = :id')
->setParameter('id', ***ID VARIABLE NEEDS TO GO HERE***)
->orderBy('u.root', 'ASC')
->addOrderBy('u.lft', 'ASC');
},
'empty_value' => 'Choose an option',
'property' => 'indentedName',
));
}
public function getDefaultOptions()
{
return array(
'data_class' => 'DEMO\DemoBundle\Entity\Product\Product'
);
}
public function getName()
{
return 'demo_demobundle_product_type';
}
}
getDefaultOptions()
,而是使用setDefaultOptions()
。否则会显示:“选项“no_animal_type”不存在。已知选项为:“action”,“attr”,“auto_initialize”,...” - Bonswouar