【发布时间】:2016-04-05 08:49:47
【问题描述】:
我有一个具有多项选择属性的类:
...
/**
* @ORM\Column(type="array", name="majority_types")
* @Constraints\Choice(callback="getAvailableMajorityTypes", multiple="true")
*/
private $majorityTypes;
...
public static function getAvailableMajorityTypes()
{
return array(
self::SIMPLE_MAJORITY,
self::UNANIMITY_MAJORITY,
self::THREE_FIFTHS_MAJORITY,
self::ONE_THIRD_MAJORITY,
self::FOUR_FIFTHS_MAJORITY
);
}
...
我也有这个类的表单类:
...
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
...
->add('majorityTypes', ChoiceType::class, array(
'multiple' => true,
))
...
->getForm();
}
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'MyClass',
));
}
但来自getAvailableMajorityTypes 的选择不会呈现。
我只是按照以下步骤操作:http://symfony.com/doc/master/reference/constraints/Choice.html#supplying-the-choices-with-a-callback-function,但由于某种原因它不起作用。
编辑:
我发现使用静态选择作为注释都不起作用(choices={"foo1", "foo2"})。它工作的唯一方法是在创建表单时直接在add 方法中传递选项。我还没有发现问题。
【问题讨论】: