カスタムコンストラクタの検証をエンティティの1つに設定しようとしていますが、コンストラクトの検証では、フィールドをチェックして検証するためにデータテーブルをチェックする必要があります。エンティティのサービスとしてのカスタム制約の検証
私はこのリンクの後に続きます:https://symfony.com/doc/2.8/validation/custom_constraint.htmlしかし、YAMLを使ってエンティティにconstraitバリデーションを設定する方法はわかりません。
constrait検証をクラスとして設定すると、symfonyはそのクラスがEntityManagerのインスタンスを渡す必要があるというエラーを返します。
namespace Acme\BundleibBundle\Validator\Constraints;
use Doctrine\ORM\EntityManager;
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;
class IsNotDayOff extends ConstraintValidator
{
private $em;
public $message = 'Impossible the send this day.';
public function __construct(EntityManager $entityManager)
{
$this->em = $entityManager;
}
public function validate($value, Constraint $constraint)
{
$repository = $em->getRepository('AcmeRibBundle:DayOff');
$isDayOff = $repository->findOneByDate($value);
if ($isDayOff) {
$this->context->buildViolation($constraint->message)
->addViolation();
}
}
}
そして、ここに私のサービスの設定:
validator.is_not_day_off:
class: Acme\Bundle\RibBundle\Validator\Constraints\IsNotDayOff
attributes:
- "@doctrine.orm.entity_manager"
tags:
- { name: validator.constraint_validator, alias: "validator.is_not_day_off" }
私もこれを試してみてください。
は、ここに私のバリデータである
validation.yml
Acme\Bundle\RibBundle\Entity\Address:
properties:
deliveryDate:
- validator.is_not_day_off: ~
しかし、あまりにもスローと例外。
help pls?
だけを宣言する必要があなたのサービス設定で 'attributes'を' arguments'に置き換えてください。 – Timurib
はい、間違いでしたが、エラーは継続します –
制約戻りのvalidateBy()メソッドとは何ですか? Symfonyのどのバージョンを使用していますか? – Timurib