大家好我正在使用symfony2表单构建器,我想在表单元素上添加属性,所需的效果是这样的:
<form
data-login="<?php echo $view['router']->generate('login_check'); ?>"
data-register="<?php echo $view['router']->generate('register'); ?>"
action="<?php echo $view['router']->generate('login_check'); ?>"
method="post"
id="ajaxLoginForm"
name="login_form">
我正在使用php模板。我怎么能做到这一点?
感谢您的时间。 如果您有疑问,请在评论部分询问。 最好的祝福, 的Georgi。
答案 0 :(得分:2)
不幸的是,通过FormBuilder
采取与自定义表单字段相同的方式,这是不可能的。要对根表单元素执行此操作,在表单类的setDefaultOptions
(扩展AbstractType
的那个)上,您应该返回attr
密钥,并返回相应的value是属性名称的关联数组=&gt;值:
public function setDefaultOptions(OptionsResolverInterface $resolver) {
$resolver->setDefaults(array(
'attr' => array('id' => 'ajaxLoginForm'),
...
));
}
对于表单name
属性,只需实现(在同一个类上)
public function getName() {
return 'login_form';
}
正确实施上述方法后,应正确呈现属性,而无需对模板或表单主题执行任何修改。
注意:您可能必须在表单中注入路由器组件(或在实例化时将其作为选项传递),以便为data-login
和data-register
创建所需的路由。 {{1}}属性。
答案 1 :(得分:0)
对于属性使用
<?php echo $view['form']->form($form, array(
'attr' => array(
'data-login' => $view['router']->generate('login_check'),
'data-register' => $view['router']->generate('register'),
// etc...
),
)) ?>
对于特定属性,您可以使用
// In form class
$builder->setAction('/login_check');
$builder->setMethod('post');