Проверка формы в Symfony 2.5

Я пытаюсь проверить поля в форме контакта, форма, в которой он работает, работает и публикует данные, однако я застрял в получении одобренных полей. В соответствии с этой документацией кажется довольно прямой настройкой проверки, но по какой-то причине она не работает для меня.

Когда я создал пакет, не было validation.yml в папке конфигурации пакета, поэтому я вручную создал его, и это то, на что похоже мой validation.yml, его довольно простой прямо сейчас.

ClickTeck\ContactBundle\Entity\Enquiry:
 properties:
 name:
 - NotBlank: ~
 - Length:
 min: 2
 max: 50
 minMessage: "Your first name must be at least {{ limit }} characters long"
 maxMessage: "Your first name cannot be longer than {{ limit }} characters long"

Это выглядит как DefaultController

namespace ClickTeck\ContactBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use ClickTeck\ContactBundle\Entity\Enquiry;
use ClickTeck\ContactBundle\Form\EnquiryType;
use Symfony\Component\HttpFoundation\Request;
class DefaultController extends Controller
{
 public function indexAction(Request $request)
 {
 $enquiry = new Enquiry();
 $form = $this->createForm(new EnquiryType(), $enquiry);

 $form->handleRequest($request);

 if ($form->isValid()) {
 return $this->redirect($this->generateUrl('contact_form'));
 }

 return $this->render('ContactBundle:Default:contact.html.twig', array(
 'form' => $form->createView()
 ));
 }
}

Это моя Enquiry.php внутри папки Entity

<!--?php

namespace ClickTeck\ContactBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Enquiry
 */
class Enquiry
{
 /**
 * @var integer
 */
 private $id;

 /**
 * @var string
 */

 private $name;

 /**
 * @var string
 */
 private $email;

 /**
 * @var string
 */
 private $subject;

 /**
 * @var string
 */
 private $body;


 /**
 * Get id
 *
 * @return integer 
 */
 public function getId()
 {
 return $this--->id;
 }

 /**
 * Set name
 *
 * @param string $name
 * @return Enquiry
 */
 public function setName($name)
 {
 $this->name = $name;

 return $this;
 }

 /**
 * Get name
 *
 * @return string 
 */
 public function getName()
 {
 return $this->name;
 }

 /**
 * Set email
 *
 * @param string $email
 * @return Enquiry
 */
 public function setEmail($email)
 {
 $this->email = $email;

 return $this;
 }

 /**
 * Get email
 *
 * @return string 
 */
 public function getEmail()
 {
 return $this->email;
 }

 /**
 * Set subject
 *
 * @param string $subject
 * @return Enquiry
 */
 public function setSubject($subject)
 {
 $this->subject = $subject;

 return $this;
 }

 /**
 * Get subject
 *
 * @return string 
 */
 public function getSubject()
 {
 return $this->subject;
 }

 /**
 * Set body
 *
 * @param string $body
 * @return Enquiry
 */
 public function setBody($body)
 {
 $this->body = $body;

 return $this;
 }

 /**
 * Get body
 *
 * @return string 
 */
 public function getBody()
 {
 return $this->body;
 }

}

Это EnquiryType.php внутри Entity

namespace ClickTeck\ContactBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;

class EnquiryType extends AbstractType
{
 public function buildForm(FormBuilderInterface $builder, array $options)
 {
 $builder->add('name');
 $builder->add('email', 'email');
 $builder->add('subject');
 $builder->add('body', 'textarea');
 }

 public function getName()
 {
 return 'contact';
 }
}

Любой Наконец-то мой шаблон contact

{% extends '::base.html.twig' %}
{% block title %}Contact{% endblock %}
{% block body %}
 <div>
 <div>
 <header>
 <h2>Contact Us</h2>
 </header>
 {{ form_errors(form) }}
 <form action="{{ path('contact_form') }}" method="post" {{="" form_enctype(form)="" }}="" role="form">
 {{ form_errors(form) }}
 <div>
 <div>
 {{ form_label(form.name) }}
 </div>
 <div>
 {{ form_widget(form.name, { 'attr': {'class': 'form-control'} }) }}
 </div>
 </div>
 <div>
 <div>
 {{ form_label(form.email) }}
 </div>
 <div>
 {{ form_widget(form.email, { 'attr': {'class': 'form-control'} }) }}
 </div>
 </div>
 <div>
 <div>
 {{ form_label(form.subject) }}
 </div>
 <div>
 {{ form_widget(form.subject, { 'attr': {'class': 'form-control'} }) }}
 </div>
 </div>
 <div>
 <div>
 {{ form_label(form.body) }}
 </div>
 <div>
 {{ form_widget(form.body, { 'attr': {'class': 'form-control', 'rows':'10'} }) }}
 </div>
 </div>
 {{ form_rest(form) }}
 <div>
 <div>
 
 </div>
 </div>
 </form>
 </div>
 </div>
{% endblock %}

Когда я отправляю форму с пустым полем имени, я не получаю никаких ошибок, я буду очень признателен, если кто-то может указать мне в правильном направлении.

1 ответ

Это то, что решило мою проблему, в app/config/config.yml по умолчанию проверка правильности отключена, измените ее на следующие и все проверенные действия.

framework:
 validation: { enabled: true, enable_annotations: false }

licensed under cc by-sa 3.0 with attribution.