【问题标题】:Customize form rendering {{ form(form)}} vs. {{ form_widget(form) }} in TWIG在 TWIG 中自定义表单渲染 {{ form(form)}} 与 {{ form_widget(form) }}
【发布时间】:2015-03-17 21:52:19
【问题描述】:

我正在尝试在 Symfony (http://symfony.com/doc/current/cookbook/form/form_customization.html) 中自定义表单渲染。我设法自定义“文本”小部件,但未能自定义“提交”小部件。我一直在以多种方式调试此问题,并遇到以下(更简单的)障碍:

我的控制器非常标准,看起来像这样:

$user = new user();
$form = $this->createFormBuilder($user)
->add('name','text')
//other text items...
->add('save','submit', array('label'=> 'Signup'))

$form->handleRequest($request);
if($form->is Valid()) {
//render the template...
}

现在,如果我在 TWIG 中渲染表单

{{ form(form) }}

一切正常(表单被提交)。但如果我把它改成:

{{ form_widget(form) }}

“提交”按钮不提交任何东西(我猜这意味着要么按钮不触发任何东西,要么我的表单不再有效)。

Symfony 文档http://symfony.com/doc/current/cookbook/form/form_customization.html 似乎声明这两个应该以类似的方式呈现表单。任何人都可以就这个问题的来源提供一些指导吗?最终,当我尝试使用 {{ form_widget(form.save) }} 自定义“提交”按钮时,我遇到了同样的问题。谢谢。

【问题讨论】:

    标签: forms symfony widget twig


    【解决方案1】:

    The Symfony Best Practices book 说“最佳实践: 在模板中添加按钮,而不是在表单类或控制器中。”

    【讨论】:

    • 这很有帮助。我应该查看表明我需要添加 {{ form_start(form) }} 和 {{ form_end(form) }} 才能使上面的代码工作的最佳实践。
    猜你喜欢
    • 2014-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    • 2014-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多