Правило Currency
Правило Currency относится к секции form и
применяется для валидации полей, в которых
пользователь вводит код валюты. Правило
проверяет, что значение является строкой из трёх
букв и входит в список допустимых кодов ISO 4217,
например 'USD', 'EUR', 'RUB'.
По умолчанию допускаются любые валюты, но можно
ограничить список через опцию choices.
Правило вешается на свойство сущности через
атрибут #[Assert\Currency].
Синтаксис
#[Assert\Currency(
message: 'The value is not a valid currency.'
)]
Пример
Давайте создадим сущность с полем currency и
повесим на него правило Currency:
<?php
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
class Product
{
#[Assert\Currency]
private string $currency;
public function setCurrency(string $currency): void
{
$this->currency = $currency;
}
public function getCurrency(): string
{
return $this->currency;
}
}
?>
Пример
Давайте проверим значение 'USD' через
валидатор:
<?php
namespace App\Controller;
use App\Entity\Product;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Validator\Validator\ValidatorInterface;
class ProductController extends AbstractController
{
#[Route('/product', name: 'product_check')]
public function check(ValidatorInterface $validator): Response
{
$product = new Product();
$product->setCurrency('USD');
$errors = $validator->validate($product);
if (count($errors) === 0) {
return new Response('valid');
}
return new Response((string) $errors);
}
}
?>
Результат выполнения кода:
"valid"
Пример
Давайте проверим некорректное значение
'abcde':
<?php
namespace App\Controller;
use App\Entity\Product;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Validator\Validator\ValidatorInterface;
class ProductController extends AbstractController
{
#[Route('/product-invalid', name: 'product_invalid')]
public function invalid(ValidatorInterface $validator): Response
{
$product = new Product();
$product->setCurrency('abcde');
$errors = $validator->validate($product);
return new Response((string) $errors);
}
}
?>
Результат выполнения кода:
"Object(App\Entity\Product).currency: This value is not a valid currency."