Правило NotBlank
Правило NotBlank вешается на поле формы
и проверяет, что его значение не является пустым.
Пустыми считаются значения null, пустая строка
'', а также строка, состоящая только из пробелов.
В отличие от правила NotNull, которое проверяет
только на null, правило NotBlank отсеивает
и пустые строки. Первым параметром можно передать
текст сообщения об ошибке, который увидит пользователь,
если проверка не пройдена.
Синтаксис
#[NotBlank(message: message)]
Пример
Давайте создадим форму с полем title и навесим
на него правило NotBlank:
<?php
namespace App\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Validator\Constraints\NotBlank;
class ArticleType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder->add('title', TextType::class, [
'constraints' => [
new NotBlank(
message: 'The title should not be blank.',
),
],
]);
}
}
?>
Если отправить форму с пустым полем title,
валидация не пройдёт и пользователь увидит сообщение,
переданное в параметре message.
Пример
Давайте проверим валидацию формы в контроллере:
<?php
namespace App\Controller;
use App\Form\ArticleType;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_form')]
public function form(Request $request): Response
{
$form = $this->createForm(ArticleType::class);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
return new Response('form is valid');
}
return $this->render('article/form.html.twig', [
'form' => $form->createView(),
]);
}
}
?>
Результат выполнения кода при пустом поле:
"The title should not be blank."
Пример
Правило NotBlank можно вешать сразу на несколько
полей, а также использовать без параметров:
<?php
namespace App\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Validator\Constraints\NotBlank;
class ArticleType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder->add('title', TextType::class, [
'constraints' => [
new NotBlank(),
],
]);
$builder->add('text', TextareaType::class, [
'constraints' => [
new NotBlank(),
],
]);
}
}
?>
Если не передавать параметр message, Symfony
подставит сообщение по умолчанию:
'This value should not be blank.'.