Symfony 4. @Assert \ Choice(callback =“ ...”)仅适用于表单生成器吗?

时间:2019-02-20 16:34:53

标签: symfony4

我想要限制字段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 :(得分:0)

这可能是最好的方法,但是在formType中,您可以在options数组中使用“约束”(在字段名和propertyType之后)。

这是一个例子:     ['constraints' => [ new NotBlank([ 'message' => 'Please choose a password.', ]), ]],