[英]Form validation in 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()
));
}
}
這是我在Entity
文件夾中的Enquiry.php
<?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;
}
}
這是Entity
文件夾中的EnquiryType.php
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 class="container">
<div class="row">
<header>
<h1>Contact Us</h1>
</header>
{{ form_errors(form) }}
<form action="{{ path('contact_form') }}" method="post" {{ form_enctype(form) }} role="form"
class="form-horizontal">
{{ form_errors(form) }}
<div class="form-group">
<div class="col-sm-2 control-label">
{{ form_label(form.name) }}
</div>
<div class="col-sm-10">
{{ form_widget(form.name, { 'attr': {'class': 'form-control'} }) }}
</div>
</div>
<div class="form-group">
<div class="col-sm-2 control-label">
{{ form_label(form.email) }}
</div>
<div class="col-sm-10">
{{ form_widget(form.email, { 'attr': {'class': 'form-control'} }) }}
</div>
</div>
<div class="form-group">
<div class="col-sm-2 control-label">
{{ form_label(form.subject) }}
</div>
<div class="col-sm-10">
{{ form_widget(form.subject, { 'attr': {'class': 'form-control'} }) }}
</div>
</div>
<div class="form-group">
<div class="col-sm-2 control-label">
{{ form_label(form.body) }}
</div>
<div class="col-sm-10">
{{ form_widget(form.body, { 'attr': {'class': 'form-control', 'rows':'10'} }) }}
</div>
</div>
{{ form_rest(form) }}
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<input type="submit" value="Send Message" class="btn btn-primary"/>
</div>
</div>
</form>
</div>
</div>
{% endblock %}
當我提交帶有空名稱字段的表單時,我沒有收到任何錯誤,如果有人可以指出正確的方向,我將不勝感激。
這就是解決我的問題的方法,默認情況下, app/config/config.yml
的驗證似乎已關閉,將其更改為以下內容,所有驗證均有效。
framework:
validation: { enabled: true, enable_annotations: false }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.