Symfony2 - Twig渲染控制器。约束形式显示

时间:2013-12-09 12:26:18

标签: php symfony

我需要使用@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 显示约束错误(route / configsup)而不是整个页面(principal.html.twig)。我怎样才能使它发挥作用?

1 个答案:

答案 0 :(得分:0)

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

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