Форма проверяется, и ошибки также отображаются в form_errors(form), но когда я пробую form_errors(form.Title), форма проверяется перенаправлением на ту же страницу, но не отображает никаких ошибок.
class CRUDController extends Controller
{
/**
* @Route("/add", name = "insert_article_route")
*/
public function insertArticleAction(Request $request)
{
$article = new Article();
// bootstrap class
$class = ["class"=>"form-control"];
$form = $this->createForm(ArticleType::class,$article);
$form->handleRequest($request);
if ($request->isMethod('POST'))
{
if ($form->isSubmitted() && $form->isValid())
{
// get form data
$article = $form->getData();
// get image file
$file = $article->getImage();
// get original image name
$filename = $file->getClientOriginalName();
// set image name in entity
$article->setImage($filename);
// Image upload
$dir = $this->getParameter('images');
$file->move($dir, $filename);
$em = $this->getDoctrine()->getManager();
$em->persist($article);
$em->flush();
return $this->redirectToRoute('table_route');
}
}
return $this->render('BlogBundle:Blog:form.html.twig',['form'=>$form->createView()]);
}
{% extends 'BlogBundle::base.html.twig' %}
{% block nav_item %}
<li class = "nav-item active">
<a class = "btn btn-secondary" href = "{{ url('table_route') }}">View</a>
</li>
{% endblock %}
{% block body %}
<div class = "container">
<div class = "row mt-5 justify-content-center">
<div class = "col-6">
{{ form_start(form, { method:'post',attr:{novalidate:'novalidate'}}) }}
<div class = "form-group">
{{ form_errors(form) }}
{{ form_label(form.Title) }}
<div class = "text-danger">
{{ form_errors(form.Title) }}
</div>
{{ form_widget(form.Id) }}
{{ form_widget(form.Title) }}
</div>
<div class = "form-group">
{{ form_label(form.Description) }}
{{ form_errors(form.Description) }}
{{ form_widget(form.Description) }}
</div>
<div class = "form-group">
{{ form_label(form.Content) }}
{{ form_errors(form.Content) }}
{{ form_widget(form.Content) }}
</div>
<div class = "form-group">
{{ form_label(form.Category) }}
{{ form_errors(form.Category) }}
{{ form_widget(form.Category) }}
</div>
<div class = "form-group">
{{ form_label(form.CreatedAt) }}
{{ form_errors(form.CreatedAt) }}
{{ form_widget(form.CreatedAt) }}
</div>
<div class = "form-group">
{{ form_widget(form.Image) }}
{{ form_errors(form.CreatedAt) }}
</div>
<div class = "form-group">
{{ form_widget(form.Submit) }}
</div>
</div>
</div>
</div>
{{ form_rest(form) }}
{{ form_end(form, {'render_rest':false}) }}
{% endblock %}
<?php
namespace BlogBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* Article
*
* @ORM\Table(name = "article")
* @ORM\Entity(repositoryClass = "BlogBundle\Repository\ArticleRepository")
*/
class Article
{
/**
* @var int
*
* @ORM\Column(name = "id", type = "integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy = "AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name = "title", type = "string", length=255)
* @Assert\NotBlank()
* @Assert\Length(min = "5")
*/
private $title;
/**
* @var string
*
* @ORM\Column(name = "description", type = "string", length=255)
* @Assert\NotBlank()
*/
private $description;
/**
* @var string
*
* @ORM\Column(name = "content", type = "string", length=255)
* @Assert\NotBlank()
*/
private $content;
...
.....






Просто удали эту строку
{{ form_errors(form) }}
потому что эта строка перезаписывает отображение сообщения об ошибке отдельного поля.
имя поля формы ветки должно соответствовать имени свойства сущности, в этом случае нижний корпус верблюда
{{ form_errors(form.xxx) }}
Вы случайно не используете какую-нибудь настраиваемую тему глобальной формы, которая отменяет функцию form_errorsTwig?
Я вижу, что имя вашего свойства написано в нижнем регистре, но в вашей ветке все написаны заглавными буквами. попробуйте изменить его на нижний регистр
@habibun Спасибо, чувак! Я изменил form.Title на form.title, и это сработало: D
Не уверен, почему сейчас он будет пустым, но @habibun прав - как только вы отобразите сообщение об ошибке, вы не сможете сделать это снова. Можете ли вы попробовать записать
dumpв$form->getErrors(TRUE, TRUE)непосредственно перед звонком вrender?