Новое в Symfony 4.3: Улучшены финансовые валидаторы

Перевод статьи New in Symfony 4.3: Improved Financial Constraints.

Проверка кода IBAN

Международный номер банковского счета (IBAN) является согласованной на международном уровне системой идентификации банковских счетов. Банковский идентификационный код (BIC) — это уникальный идентификационный код как для финансовых, так и для нефинансовых учреждений, определенный в стандарте ISO 9362.

Несмотря на то, что оба кода являются независимыми, их можно проверять совместно, чтобы удостовериться, что оба принадлежат к одной стране. В Symfony 4.3 валидатор Bic получит такой функционал.

Для начала можно явно указать код IBAN с помощью новой опции iban:

use Symfony\Component\Validator\Constraints as Assert;
// ...

public static function loadValidatorMetadata(ClassMetadata $metadata)
{
$metadata->addPropertyConstraint('businessIdentifierCode', new Assert\Bic([
'iban' => 'FR1420041010050500013M02606',
)]);
}

Но можно также использовать ibanPropertyPath, чтобы получать IBAN из валидируемого объекта динамически:

use Symfony\Component\Validator\Constraints as Assert;
// ...

class Transaction
{
/**
* @Assert\Bic(ibanPropertyPath="accountNumber")
*/
public $businessIdentifierCode;

/**
* @Assert\Iban
*/
public $accountNumber;

// ...
}

Добавлено Sylvain Fabre в #28479.

Добавлена поддержка карт UATP

Universal Air Travel Plan (UATP) — это платежная сеть, принадлежащая авиакомпаниям и принимаемая тысячами продавцов для оплаты авиационных, железнодорожных, гостиничных и туристических услуг. В Symfony 4.3 улучшен валидатор CardScheme, и теперь он поддерживает новую схему UATP:

// ...

class Transaction
{
/**
* @Assert\CardScheme(
* schemes={"AMEX", "MASTERCARD", "UATP", "VISA"},
* message="Некорректный номер карты."
* )
*/
public $cardNumber;
}

Добавлено Raúl Fraile в #29504.