【发布时间】: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() 相同。它不显示表单约束错误。