【发布时间】:2014-03-18 21:13:34
【问题描述】:
找到的解决方案:我没有在表单的构建器中指定方法。添加 setMethod("POST") 解决了我的问题。
我最近开始使用 Symfony2(并学习 TDD。我想我不太喜欢它)并且从今天早上开始我的表单就遇到了问题。它曾经有效,但现在我似乎无法得到有效的响应。
我设法稍微查明了错误。 Symfony 在 HttpFoundationRequestHandler 类中检查它是否应该处理请求(从第 56 行开始),第 59 行是它中断的地方
} elseif ($request->request->has($name) || $request->files->has($name)) {
所以如果我做对了,因为它在请求中找不到表单的名称,它只是忽略它,认为表单从未提交过。我不明白这是怎么可能的,因为唯一可能导致页面更改/刷新的是用户按下表单的“提交”按钮......
如果你们中的任何人对我的问题有什么建议或简单的指示,我将非常感激!
由于我对此一无所知,我将在我的 TrinomeClientVideoUploadForm 类和我的控制器内显示和处理表单请求的函数下方发布。
如果我用来构建表单的类就在这里:
<?php
namespace Trinome\WebVideoViewBundle\Model\Forms;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
class TrinomeClientVideoUploadForm extends AbstractType
{
private $name;
public function __construct( $name = "trinome_client_video_upload" )
{
$this->name = $name;
}
/**
* {@inheritdoc}
*/
public function buildForm( FormBuilderInterface $builder, array $options )
{
$builder->add( "client", "text" )
->add( "video", "file" )
->add( "upload", "submit" );
}
/**
* {@inheritdoc}
*/
public function getName()
{
return $this->name;
}
}
这是在我的(唯一的)控制器中处理页面的函数:
/**
* @Route("/")
* @Template()
*/
public function indexAction( Request $request )
{
$uploadVideoForm = new UploadVideoFormDataSet();
$form = $this->createForm( new TrinomeClientVideoUploadForm(), $uploadVideoForm );
$form->handleRequest( $request );
if ( $form->isValid() )
{
// It never gets here anyways, so I removed it for this post.
}
return array(
"form" => $form->createView(),
);
}
我在其中呈现表单的 Twig 文件:
{% extends "@BaseViews/base.html.twig" %}
{% block title %}Outil d'upload vidéo Trinome{% endblock %}
{% block stylesheets %}
{% stylesheets '@TrinomeWebVideoViewBundle/Resources/public/css/*' filter='cssrewrite' %}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
{% endblock %}
{% block body %}
<div id="wrapper">
<header>
{% block header %}
{% image '@logo_trinome' %}
<img src="{{ asset_url }}" alt="Logo Trinome" />
{% endimage %}
{% endblock %}
</header>
<div id="content">
{% block content %}
<h1>Connection</h1>
{{ form( form ) }}
{% endblock %}
</div>
</div>
{% endblock %}
【问题讨论】:
-
显示渲染表单的树枝
-
用 Twig 文件编辑了我的帖子。
标签: forms symfony request httprequest