Почему никто не упоминает, что вы можете проверить его в экземпляре FormBuilder, используя ключ «ограничения»??? Прежде всего, прочитайте документацию Использование Форма без класса
'constraints' =>[
new Assert\Email([
'message'=>'This is not the corect email format'
]),
new Assert\NotBlank([
'message' => 'This field can not be blank'
])
],
Отлично работает с симфони 3.1
Пример:
namespace SomeBundle\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Form\Extension\Core\Type;
use Symfony\Component\Validator\Constraints as Assert;
class DefaultController extends Controller
{
/**
* @Route("kontakt", name="_kontakt")
*/
public function userKontaktAction(Request $request) // access for all
{
$default = array('message' => 'Default input value');
$form = $this->createFormBuilder($default)
->add('name', Type\TextType::class,[
'label' => 'Nazwa firmy',
])
->add('email', Type\EmailType::class,[
'label' => 'Email',
'constraints' =>[
new Assert\Email([
'message'=>'This is not the corect email format'
]),
new Assert\NotBlank([
'message' => 'This field can not be blank'
])
],
])
->add('phone', Type\TextType::class,[
'label' => 'Telefon',
])
->add('message', Type\TextareaType::class,[
'label' => 'Wiadomość',
'attr' => [
'placeholder' => 'Napisz do nas ... '
],
])
->add('send', Type\SubmitType::class,[
'label' => 'Wyślij',
])
->getForm();
$form->handleRequest($request);
if ($form->isValid()) {
// data is an array with "name", "email", and "message" keys
$data = $form->getData();
// send email
// redirect to prevent resubmision
var_dump($data);
}
return $this->render('SomeBundle:Default:userKontakt.html.twig', [
'form' => $form->createView()
]);
}
}
Результат:
См. документацию о доступных типах проверки. http://api.symfony.com/3.1/Symfony/Component/Validator/Constraints.html
Если вы хотите проверить, какие клавиши доступны, кроме сообщения, перейдите к документации по адресу:
http://symfony.com/doc/current/reference/constraints/Email.html
или перейдите к:
Ваш проект\вендор\symfony\symfony\src\Symfony\Component\Validator\Constraints\Email.php
оттуда вы сможете увидеть, что еще доступно.
public $message = 'This value is not a valid email address.';
public $checkMX = false;
public $checkHost = false;
public $strict; "
Также обратите внимание, что я создал и проверил форму внутри контроллера, что не является лучшей практикой и должно использоваться только для форм, которые вы никогда не будете повторно использовать где-либо еще в своем приложении.
Лучше всего создавать формы в отдельном каталоге YourBundle/Form. Переместите весь код в новый класс ContactType.php. (не забудьте импортировать туда класс FormBuilder, так как он не будет расширять ваш контроллер и не будет иметь доступа к этому классу через '$ this')
[внутри класса ContactType:]
namespace AdminBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\Type;
use Symfony\Component\Validator\Constraints as Assert;
[внутри вашего контроллера:]
use YourBundle/Form/ContactType;
// use ...
//...
$presetData = []; //... preset form data here if you want to
$this->createForm('AdminBundle\Form\FormContactType', $presetData) // instead of 'createFormBuilder'
->getForm();
// render view and pass it to twig templet...
// or send the email/save data to database and redirect the form
person
DevWL
schedule
23.07.2016