Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony2-细枝渲染控制器。约束窗体显示_Php_Symfony - Fatal编程技术网

Php Symfony2-细枝渲染控制器。约束窗体显示

Php Symfony2-细枝渲染控制器。约束窗体显示,php,symfony,Php,Symfony,我需要在带有@Route和@template注释的template principal.html.twig中呈现控制器,以便创建表单: {{rendercontroller'PprsBundle:Default:SupuestoConfig',{'strategy':'inline'} 控制器: /** * @Route("/configsup", name="configsup") * @Template("PprsBundle:Default:SupuestoConfig.html.tw

我需要在带有@Route和@template注释的template principal.html.twig中呈现控制器,以便创建表单:

{{rendercontroller'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:

配置支持: 资源:@PprsBundle/Controller 类型:注释

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位数的数字时,当激活约束时,我出现了一个意外行为,因为它仅呈现显示约束错误路由/configsup的视图SupuestoConfig.html.twig,而不是整个页面principal.html.twig。如何使其工作?

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


因此,这不是一个奇怪的行为。它的行为完全按照您告诉程序的方式进行。

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