假设我将自定义symfony2表单类型定义为服务,我想在我的控制器中以此自定义表单类型获取我定义的默认值。
例如,我想根据此自定义表单类型中选择的值过滤我的数据。
我已经检查了AbstractType类,但是没有函数来获取从我的自定义表单类型定义的解析器默认值。
我不想使用实体来存储这个简单的数据,它只是3行数据。
<?php
namespace Jariff\AdminBundle\Form\CustomType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
class JariffSalutationType extends AbstractType
{
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'empty_value' => '---',
'choices' => array(
'Mr.' => 'Mr.',
'Mrs.' => 'Mrs.',
'Ms.' => 'Ms.',
)));
}
public function getParent()
{
return 'choice';
}
public function getName()
{
return 'jariff_salutation';
}
}
服务定义
services:
jariff_type_salutation:
class: Jariff\AdminBundle\Form\CustomType\JariffSalutationType
tags:
- { name: form.type, alias: jariff_salutation }
使用示例
$salutation = $this->get('jariff_type_salutation');
$entities = $em->getRepository('JariffMemberBundle:Member')->findBy(array('salutation' => $salution[1]));
感谢。
答案 0 :(得分:0)
不直接。您应该在config.yml中将称呼选项定义为参数(salutations
),并将此参数传递给this recipe后的表单类型。然后,在您的控制器中,使用(按照您的示例用法)检索选择数组:
$this->container->getParameter('salutations')[1];
您还可以在表单类型中添加public static function getSalutations()
,返回选择数组并在setDefaultOptions
中调用它:
$resolver->setDefaults(array(
'empty_value' => '---',
'choices' => self::getSalutations()
));