Правило Iban
Правило Iban относится к классу
Symfony\Component\Validator\Constraints\Iban
и вешается на поле формы, значение которого должно
быть корректным номером международного банковского
счёта IBAN. При валидации Symfony проверяет
длину строки, соответствие формату страны и
контрольную сумму. Первым параметром можно
передать текст сообщения об ошибке, а также
задать опции message и groups.
Синтаксис
new Iban(
message: 'Invalid IBAN',
groups: ['registration']
)
Пример
Давайте создадим форму с полем iban и повесим
на него правило Iban:
<?php
namespace App\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints\Iban;
class PaymentType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('iban', TextType::class, [
'constraints' => [
new Iban(),
],
])
->add('save', SubmitType::class, ['label' => 'Send']);
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([]);
}
}
?>
Пример
Давайте обработаем форму в контроллере и выведем результат валидации:
<?php
namespace App\Controller;
use App\Form\PaymentType;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class PaymentController extends AbstractController
{
#[Route('/payment', name: 'payment')]
public function index(Request $request): Response
{
$form = $this->createForm(PaymentType::class);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$data = $form->getData();
return new Response('IBAN: ' . $data['iban']);
}
return $this->render('payment/index.html.twig', [
'form' => $form,
]);
}
}
?>
Пример
Давайте выведем форму в шаблоне Twig:
{{ form_start(form) }}
{{ form_row(form.iban) }}
{{ form_row(form.save) }}
{{ form_end(form) }}
Пример
Если ввести корректный IBAN, форма пройдёт валидацию:
"IBAN: DE89370400440532013000"
Если ввести некорректный IBAN, форма вернёт ошибку
"Invalid IBAN".