Прежде всего, я надеюсь, что этот вопрос разрешен, потому что я думаю, что это скорее вопрос, специфичный для фреймворка (Symfony). Я столкнулся со следующей проблемой:
Форма отправляется и проверяется на достоверность для создания нового «Toernooionderdeel», и в результате должны быть вызваны операции Persist и Flush Doctrine для этой сущности, пытающиеся поместить вновь созданную сущность в базу данных. Довольно простые вещи на данный момент. Но форма терпит неудачу в ->isValid(), прежде чем можно будет сохраниться и сбросить.
В моем случае ограничения применяются к свойствам различными способами с помощью аннотаций. @Assert\Valid специально используется для свойств, которые определяют отношения ManyToOne с другими объектами, и все это работает нормально, пока...
Я пытаюсь использовать @Assert\Valid для свойства "Toernooionderdeel" под названием "$toernooi", которое представляет отношение ManyToOne (Toernooionderdeel -> Toernooi). Разница между этим и другими отношениями, которые я проверяю таким же образом, заключается в том, что эта сущность «Toernooi» является производной от другой сущности, в то время как другие сущности не являются производными.
Несмотря на то, что «Toernooi» явно определен в свойстве «$toernooi» «Toernooionderdeel», ограничение определяет его как нарушение, и поэтому форма не проходит проверку.
Какие вещи я должен учитывать при выполнении этого типа проверки (с использованием ограничений) для «расширенной» конструкции объекта, подобной этой? Делал ли кто-нибудь из вас это раньше, и если да, то как?
@Jakumi, твой вопрос направил меня в правильном направлении. Сущность существовала заранее и имеет ограничения сама по себе. Тем самым я обнаружил, что в валидаторе формы функция getViolations выдавала массив с нарушениями, которые были связаны с сущностью Toernooi. Первопричина найдена, пришло время для решения некоторых основных проблем с сущностью Toernooi :) Спасибо, мой друг




Когда объект, указанный в свойстве («дочерний»), проверяется в родительском объекте с помощью Assert\Valid, его действительность также проверяется. Когда дочерняя сущность недействительна, родительская сущность также недействительна (транзитивна).
Конкретно для этого сценария это означает, что если дочернее свойство является объектом, все @Assert (ограничения) в этом объекте также будут проверены («утверждены»).
первый вопрос, который приходит на ум: существует ли сущность Toernooi заранее или она сохраняется каскадно и имеет ли она сама ограничения, которые должны быть выполнены (тогда каскадное сохранение не удастся, так как Assert\Valid требует только, чтобы это было действительным сущность афаик... и, наверное, уже надо настойчиво?)