【问题标题】:Set attributes for root element on Symfony2 form builder在 Symfony2 表单构建器上设置根元素的属性
【发布时间】:2014-03-10 18:16:57
【问题描述】:

大家好,我正在使用 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 模板。我怎样才能做到这一点?

感谢您的时间。 如果您有问题,请在评论部分提出。 此致, 乔治。

【问题讨论】:

    标签: php symfony formbuilder


    【解决方案1】:

    不幸的是,这不可能通过对FormBuilder 进行操作,就像自定义表单字段一样。要为根表单元素执行此操作,在表单类的 setDefaultOptions(扩展 AbstractType 的那个)上,您应该(除其他外)返回 attr 键,相应的值是一个关联数组属性名称 => 值:

    public function setDefaultOptions(OptionsResolverInterface $resolver) {
    
        $resolver->setDefaults(array(
            'attr' => array('id' => 'ajaxLoginForm'),
            ...
        ));
    }
    

    对于表单name属性,只需实现(在同一个类上)

    public function getName() {
    
        return 'login_form';
    }
    

    正确实现上述方法后,属性应该可以正确呈现,而无需对模板或表单主题进行任何修改。

    注意:您可能必须在表单中注入路由器组件(或在实例化时将其作为选项传递),以便为您的data-login 和@987654329 创建所需的路由@ 属性。

    【讨论】:

      【解决方案2】:

      属性使用

      <?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');
      

      【讨论】:

        猜你喜欢
        • 2019-07-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-16
        • 2017-05-23
        • 2010-12-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多