【发布时间】:2015-09-11 08:42:11
【问题描述】:
我正在使用 Symfony 2.7 开发博客。我有一个 ArticleBundle 和一个 CommentBundle。我的实体文章和评论通过多对一关系链接。
当我尝试发送评论时,它失败了。 $form->isValid() 方法返回 false。
这里,我的添加方法来发送评论:
public function addAction(Article $article, Request $request){
$comment = new Comment();
$form = $this->createForm(new CommentType(), $comment);
$form->handleRequest($request);
if($form->isValid()){
$comment->setArticle($article);
$em = $this->getDoctrine()->getManager();
$em->persist($comment);
$em->flush();
return $this->redirect($this->generateUrl('esgi_article_view', array(
'id' => $article->getId()
)));
} else{
return $this->render('ESGICommentBundle:Comment:add.html.twig', array(
'form' => $form->createView(),
'article' => $article
));
}
}
我的评论表单是这样包含在文章视图中的:
{{ render(controller("ESGICommentBundle:Comment:add", { 'id' : article.id })) }}
这里是我的表格:
{{ form_start(form) }}
<div class="form-group">
<div class="row">
<div class="col-xs-12 col-sm-6 col-md-8">
{{ form_label(form.author, "Auteur") }}
{{ form_widget(form.author, { 'attr' : { 'class' : 'form-control' } }) }}
{{ form_errors(form.author) }}
</div>
</div>
<div class="row">
<div class="col-xs-12 col-sm-6 col-md-8">
{{ form_label(form.email, "Email (optionnel)") }}
{{ form_widget(form.email, { 'attr' : { 'class' : 'form-control' } }) }}
{{ form_errors(form.email) }}
</div>
</div>
<div class="row">
<div class="col-xs-12 col-sm-6 col-md-8">
{{ form_label(form.content, "Commentaire") }}
{{ form_widget(form.content, { 'attr' : { 'class' : 'form-control' } }) }}
{{ form_errors(form.content) }}
</div>
</div>
</div>
<button class="btn btn-success" type="submit">Poster</button>
{{ form_end(form) }}
谢谢,祝你有美好的一天!
【问题讨论】:
-
可能您忘记在表单中添加操作,如果您在不同的 url 上呈现此表单,则必须设置该操作。
-
我在发帖前试过了,但没用。
-
@L.Baptiste 添加
var_dump($form->getErrors(true))(dump($form->getErrors(true))` 如果安装了 DebuggerBundle),然后在$form->handleRequest($request);之后添加die(); -
@L.Baptiste
else部分在您的代码中是多余的,您可以在if语句之外返回第二个 return 语句.. -
getErrors 返回一个空数组。
标签: symfony twig symfony-2.7