я читал документация по изготовлению пользовательских валидаторов и в нем не говорится, что вы должны регистрировать созданные пользователем валидаторы, но что еще может вызвать эту проблему?
Я создал пользовательское ограничение:
namespace Lib\Validators\UniqueValidator\Constraint;
use Symfony\Component\Validator\Constraint;
/**
* @Annotation
*/
class Email extends Constraint {
public $message = "The email entered already exists.";
}
и пользовательский валидатор:
namespace Lib\Validators\UniqueValidator;
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;
class EmailValidator extends ConstraintValidator {
public function validate($value, Constraint $constraint) {
var_dump($value, $constraint); exit;
}
}
и тогда, когда я иду использовать его:
The annotation "@\Lib\Validators\UniqueValidator\Constraint\Email" in property ImageUploader\Models\User::$email does not exist, or could not be auto-loaded.
И я не уверен почему. Есть ли орфографическая ошибка, которую я не вижу? Я проверил все 50 раз.
В моем bootstrap.php
Я имею:
$loader = require 'vendor/autoload.php';
\Doctrine\Common\Annotations\AnnotationRegistry::registerLoader(array($loader, 'loadClass'));
Но это для валидаторов Symfony, нужно ли делать что-то похожее для моих пользовательских? Я должен также упомянуть, что я использую компонент валидаторов Symfony и не полный стек Symfony.
Для просмотра структуры каталогов я сделал:
\Lib
указывает на основание lib/
Я уверен, что этот стандарт является стандартным, и он скоро будет исправлен.
Ваш пользовательский валидатор должен находиться в той же папке, что и ваше ограничение. Согласно вашим пространствам имен, это не так.
Если вы хотите разделить их, вы можете переопределить validatedBy()
метод вашего Constraint
учебный класс :
public function validatedBy()
{
return get_class($this).'Validator';
}
Других решений пока нет …