Symfony 4. Работает ли @Assert \ Choice (callback = "...") только с построителем форм? - PullRequest
0 голосов
/ 20 февраля 2019

Я хочу ограничить значения в поле action.В этом поле могут храниться только предопределенные строки.@Assert\Choice(callback="getActions") работает только с формостроителем?Есть ли другой способ проверить допустимые значения?

class Log
{
    const SENT_REGISTRATION_EMAIL = 'Registration email was sent';

    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\Column(type="text", length=50)
     * @Assert\Choice(callback="getActions")
     */
    private $action;

    .
    .
    .

    /**
     *
     * @return string[]
     */
    public static function getActions(): array
    {
        return [self::SENT_REGISTRATION_EMAIL];
    }
}
$log = new Log();
$log->setAction(Log::SENT_REGISTRATION_EMAIL);

$this->em->persist($log);
$this->em->flush();

1 Ответ

0 голосов
/ 22 февраля 2019

Это, вероятно, лучший способ, но в formType вы можете использовать «ограничения» в массиве опций (после имени поля и propertyType).

Вот пример: ['constraints' => [ new NotBlank([ 'message' => 'Please choose a password.', ]), ]],

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...