Symfony - buttonType - 具有表单实体值的属性

时间:2017-08-29 07:41:11

标签: php symfony

我正在尝试构建一个包含按钮的表单,该按钮应该具有baseId属性(例如。<button baseId="1">history</button>)。

问题是baseId值应该从每一行的实体获取。我试着如下:

public function buildForm(FormBuilderInterface $builder, array $options) {
            $builder
                ->add('bedsoreBaseId', ButtonType::class, ['attr' => [
                    'baseId' => function($entity) {
                    return $entity->getBaseId();
                }
                ], 'label' => 'history']);
}

但是,这会导致错误:

在渲染模板期间抛出异常(“Catchable Fatal Error:类Closure的对象无法转换为字符串”)。

访问此属性并将其用作属性值的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以直接在模板中设置

{{ form_row(form.bedsoreBaseId, {'attr':{'baseId':form.vars.data.baseId }}) }}

或者在PRE_SET_DATA事件

上添加此元素
public function buildForm(FormBuilderInterface $builder, array $options) {
    $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
            $data = $event->getData();
            $form = $event->getForm();

            $form->add('bedsoreBaseId', ButtonType::class, [
                'attr' => ['baseId' => $data->getBaseId()],
                'label' => 'history'
            ]);
        });
}