【问题标题】:Symfony2 - Twig render controller. Constraints form displaySymfony2 - Twig 渲染控制器。约束形式显示
【发布时间】:2013-12-09 12:26:18
【问题描述】:

我需要在带有@Route 和@Template 注释的模板(principal.html.twig)中渲染一个控制器,以便创建一个表单:

{{ render(controller('PprsBundle:Default:SupuestoConfig'), {'strategy': 'inline'}) }

控制器:

/**
 * @Route("/configsup", name="configsup")
 * @Template("PprsBundle:Default:SupuestoConfig.html.twig")
 */
public function SupuestoConfigAction()
{
    ...

     ->add('number', 'text', array(
                    'constraints' => new Length(array(
                            'min' => 1,
                            'max' => 2,
                         )), 

    ....
}

routing.yml:

configsup: resource: "@PprsBundle/Controller" type: annotation

SupuestoConfig.html.twig:

<form id="configurador" action="{{ path('configsup') }}" method="POST">
    <p class="titulo_configurador">Elija supuesto penal:</p>
        {{ form_row(form.tipo) }}
    {{ form_row(form.numero, { 'label' : ' ', 'attr' : { 'class' : 'rec3' }}) }}
        {{ form_rest(form) }}

    <input id= "btTipoSupuesto" type="submit" value="Cargar" class="inputbt"/>
</form>

当约束被激活时(当我在“数字”字段中引入一个 4 位数字时)我有一个意外的行为,因为它只呈现视图 SupuestoConfig.html.twig 显示约束错误(路由 /configsup)而不是整个页面(principal.html.twig)。我怎样才能让它工作?

【问题讨论】:

  • 还有其他解决方案吗?我在同一个视图(principal.html.twig)中创建了两个不同的嵌入式表单,我认为我不应该在同一个控制器中添加所有代码来避免这种行为,因为表单视图中会显示约束错误。
  • 如果表单无效,您可以从您的SupuestoConfigAction 将操作转发到“主要”操作,这样它不仅会呈现表单,还会呈现整个页面。
  • 谢谢,有道理!我正在尝试在表单无效的情况下重定向页面,但是这样做我无法将验证表单错误转移到主页:(
  • 这就是为什么你应该看看转发控制器而不是重定向用户。
  • $this->forward('PprsBundle:Default:principal', array('numero_supuesto' => $sesion->get('numero_supuesto'), ));工作方式与redirect() 相同。它不显示表单约束错误。

标签: php symfony


【解决方案1】:

您将表单发送到仅呈现表单的SupuestoConfigAction。您应该将表单发送到最初呈现表单的操作(使用{{ render(controller('PprsBundle:Default:SupuestoConfig'), {'strategy': 'inline'}) } 的操作。在该操作中处理表单提交并显示结果。

所以这不是一个奇怪的行为。它的行为与您告诉程序的行为完全相同。

【讨论】:

    猜你喜欢
    • 2013-05-30
    • 1970-01-01
    • 2014-03-26
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多