smo*_*eno 4 symfony symfony-2.1
我正在构建一个从'EntityType'扩展的自定义表单字段类型.我总是希望根据传递的选项返回元素的子集.
在我的类型:
$builder->add('Categories','choice_category', array('code'=> 'CAT1', 'multiple'=> true)) ;
Run Code Online (Sandbox Code Playgroud)
我已经将choice_category声明为服务.工作还可以!
bt.form.type.category:
class: My\MBundle\Form\Type\CategoryType
tags:
- { name: form.type, alias: choice_category }
Run Code Online (Sandbox Code Playgroud)
在CategoryChoiceType.php中
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(
array(
'class'=> 'CmComunBundle:Comun\Nomenclador',
'code' => null,
)
);
}
public function getParent()
{
return 'entity';
}
Run Code Online (Sandbox Code Playgroud)
我正在考虑使用query_builder选项,但我不知道如何将代码选项传递给setDefaultOptions方法,我这里不访问$ options数组.
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(
array(
'class'=> 'CmComunBundle:Comun\Nomenclador',
'code' => null,
'query_builder' => function(\Doctrine\ORM\EntityRepository $er) use ($options['code']) {
return $er->createQueryBuilder('c')
->where('c.parent_code = :code')
->orderBy('c.name', 'ASC')
->setParameter('code', $options['code']);;
}
)
);
);
Run Code Online (Sandbox Code Playgroud)
Ber*_*sek 12
你几乎做对了,但你需要使用这个特殊的语法使"query_builder"依赖于其他选项"code":
use Symfony\Component\OptionsResolver\Options;
$resolver->setDefaults(array(
'query_builder' => function (Options $options) {
// return default value of the "query_builder" option
// you can access $options['code'] here
},
));
Run Code Online (Sandbox Code Playgroud)
所以在你的具体例子中:
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'class' => 'CmComunBundle:Comun\Nomenclador',
'code' => null,
'query_builder' => function (Options $options) {
return function(EntityRepository $er) use ($options) {
return $er->createQueryBuilder('c')
->where('c.parent_code = :code')
->orderBy('c.name', 'ASC')
->setParameter('code', $options['code']);;
};
},
));
}
Run Code Online (Sandbox Code Playgroud)
这也在OptionsResolver自述文件中有记录.
| 归档时间: |
|
| 查看次数: |
8599 次 |
| 最近记录: |