我正在尝试构建一个包含按钮的表单,该按钮应该具有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的对象无法转换为字符串”)。
访问此属性并将其用作属性值的最佳方法是什么?
答案 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'
]);
});
}