choice_attr选项。高级配置

时间:2015-08-28 19:26:47

标签: php forms symfony

我想为select的每个选项添加一个属性,其值是给定属性的值。

我有以下表单类型类:

class ExtraEntityType extends AbstractType
{

    /**
     * Configures the options for this type.
     *
     * @param OptionsResolver $resolver The resolver for the options.
     */
    public function configureOptions(OptionsResolver $resolver)
    {
        $propertyAccessor = new PropertyAccessor();
        $choiceAttr = function ($choice, $key) use (&$propertyAccessor) {
            $value = $propertyAccessor->getValue($choice, 'foo');

            return ['data-extra-value' => $value];
        };

        $resolver
            ->setRequired(['extra_property'])
            ->setAllowedTypes('extra_property', 'string')
            ->setDefault('choice_attr', $choiceAttr);
    }

    /**
     * {@inheritdoc}
     */
    public function getParent()
    {
        return 'entity';
    }

    /**
     * Returns the name of this type.
     *
     * @return string The name of this type
     */
    public function getName()
    {
        return 'extra_entity';
    }
}

问题

我需要按配置的'foo'替换固定值$options['extra_property']

有人可以告诉我如何解决这个问题,或者是否还有其他方法可以解决这个问题?

1 个答案:

答案 0 :(得分:1)

您可以规范化 onClick()选项,如下所示:

choice_attr

注意 :我还没有真正对此进行过测试,如果symfony使用{{1}的自身规范化器,它可能会中断选项。