У меня есть сущность под названием ActorSection
с Count()
утверждать на одном поле:
namespace ACME\ACMEBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\ORM\Mapping\JoinTable;
use Symfony\Component\Validator\Constraints as Assert;
class ActorSection
{
//...
/**
* @ORM\ManyToMany(targetEntity="ACME\ACMEBundle\Entity\Post")
* @ORM\joinTable(name="actor_section_post")
* @Assert\Count(
* min = "1",
* minMessage = "Merci de sélectionner au moins un poste",
* )
*/
private $posts;
//...
}
В моем контроллере операции «добавить» и «редактировать» используют один и тот же сценарий. Форма проверяется даже без выбора «постов» детей.
$handleRequest = $form->handleRequest($request);
if ($request->isMethod('POST')){
if( ! $handleRequest->isValid()){
$request->getSession()->getFlashBag()->add('danger', "Error message");
} else{
$em->persist($Section);
$em->flush();
//...
}
}
ActorSelection
объекты сохраняются просто хорошо, без постов.
COUNT утверждает, игнорировать многие отношения?
Изменить: вот соответствующая часть моего конструктора форм:
$available_posts = $em->getRepository("ACMEBundle:Post")
->getAvailablePosts($convention);
$formBuilder = $this->get('form.factory')->createBuilder(FormType::class, $Section);
$formBuilder
->add('posts', EntityType::class, array(
'label' => false,
'required' => true,
'class' => 'ACME\ACMEBundle\Entity\Post',
'choice_label' => 'cinemaName',
'multiple' => true,
'expanded' => true,
'choices' => $available_posts,
))
->add('save', SubmitType::class)
;
$form = $formBuilder->getForm();
Задача ещё не решена.
Других решений пока нет …