【问题标题】:Set class (or any attribute) on Symfony2.4 form在 Symfony2.4 表单上设置类(或任何属性)
【发布时间】:2014-05-18 19:53:34
【问题描述】:

我试图弄清楚如何在通过 FormBuilder 创建的 Symfony2 表单上设置类(或任何属性)。我知道您可以通过表单本身的模板执行此操作,但我仍然想知道如何通过控制器中的$this->createFormBuilder() 执行此操作。

我的代码如下。正如您在我的代码中看到的那样,我已经尝试过 setAttribute() 方法,但它没有效果。我最初以为我搞砸了,因为我覆盖了默认的 twig form_div_layout.html.twig 文件,但事实并非如此。

private function createResolvedForm($id) {
    return $this->createFormBuilder()
                ->setAction($this->generateUrl('system_announcement_resolve', array('id' => $id)))
                ->setMethod('PUT')
                ->setAttribute('class', 'resolved-form exempt-from-default-ajax')
                ->add('submit', 'submit', array(
                    'label' => 'Mark As Resolved',
                    'attr' => array(
                        'class' => 'btn btn-success btn-xs',
                        'data-toggle' => 'tooltip',
                        'data-placement' => 'top',
                        'title' => 'Resolve Issue #' . $id,
                    )
                ))
                ->getForm();
}

需要明确的是,在我传入的提交按钮上设置类没有问题,而是实际表单本身。

感谢您的帮助!

【问题讨论】:

    标签: php forms symfony


    【解决方案1】:

    createFormBuilder 方法有两个输入参数

    public FormBuilder createFormBuilder(mixed $data = null, array $options = array())
    

    所以在您的示例中,您可以使用第二个参数在整个表单上设置类

    private function createResolvedForm($id) {
    return $this->createFormBuilder(null, array('attr' => array('class' => 'resolved-form exempt-from-default-ajax')))
                ->setAction($this->generateUrl('system_announcement_resolve', array('id' => $id)))
                ->setMethod('PUT')
                ->setAttribute('class', 'resolved-form exempt-from-default-ajax')
                ->add('submit', 'submit', array(
                    'label' => 'Mark As Resolved',
                    'attr' => array(
                        'class' => 'btn btn-success btn-xs',
                        'data-toggle' => 'tooltip',
                        'data-placement' => 'top',
                        'title' => 'Resolve Issue #' . $id,
                    )
                ))
                ->getForm();
    }
    

    【讨论】:

    • 哇,就是这么简单。太感谢了!您是否知道setAttribute() 方法的用途是什么?将您的答案标记为已接受!
    • 我认为(但我不确定)这些是表单类型对象本身的属性,而不是元素/表单的 html 属性
    • 有趣...无论如何!感谢您的帮助,不胜感激!
    猜你喜欢
    • 2015-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-17
    • 1970-01-01
    • 1970-01-01
    • 2013-06-09
    • 1970-01-01
    相关资源
    最近更新 更多