我有一个表格,我必须填写一些信息。 对于表单的其中一个字段,我需要创建一个自定义验证器。 事实上,我需要保证输入的字符串是特定的格式,如ab.123.cd
我可以使用regexp来验证这一点,但是“ab”应该与我表单的另一个字段相同,所以我需要访问验证器类中的其他字段。
这是我的验证员:
public function validate($value, Constraint $constraint)
{
preg_match('/[^\/]+/i', $value, $publisherDoiAbbr);
if($publisherDoiAbbr[0] !== $enquiry->getPublisher()->getDoiAbbreviation()) {
$this->context->addViolation($constraint->message_publisher_DOI);
}
$this->context->addViolation($constraint->message_journal_DOI);
}
我需要 $ enquiry-> getPublisher() - > getDoiAbbreviation()
您知道如何在验证器类中访问表单的值吗?
提前谢谢。
答案 0 :(得分:1)
您要做的是制作一个“CLASS CONSTRAINT”验证器。
向下滚动:
http://symfony.com/doc/current/cookbook/validation/custom_constraint.html
直到你到达类约束部分为例。
=============================================== =================
我不明白什么是te“getTargets()”
将此方法添加到Constraint类(而不是验证程序类)
class MyConstraint extends Constraint
{
public function getTargets()
{
return self::CLASS_CONSTRAINT;
}
添加完成后,验证器方法将收到一个对象而不是单个值。
class MyValidator extends ConstraintValidator
{
public function validate($value, Constraint $constraint)
{
// $value will be an object, adjust your code accordingly