사용자, 역할 및 사용자 역할 테이블이 3 개 있습니다. 사용자는 하나의 역할 만 가질 수 있지만 사용자 테이블에 역할에 대한 열을 추가하지 않으려는 경우 문제는 사용자 양식에서 ObjectSelect를 추가하려고하지만 여러 개의 선택으로 인쇄하는 것입니다. 내가 원하지 않는 removeAttribute ('multiple')를 추가하려고했지만 다음과 같은 오류가 발생합니다.Doctrine ObjectSelect에 여러 특성을 제거하는 방법이 있습니까?
"요소에 여러 특성이 설정되어 있지 않은 경우 FormSelect에서 여러 개의 선택된 값을 지정할 수 없습니다 부울 true "
여러 추가 : 거짓, 작동하지 않습니다, 그래서 그것을 알아 내려고 노력하고있어,이 코드입니다.
사용자 엔티티 :
/**
* @ORM\ManyToMany(targetEntity="Auth\Entity\User\Roles")
* @ORM\JoinTable(name="userRole",
* joinColumns={@ORM\JoinColumn(name="idUser", referencedColumnName="id", unique=true)},
* inverseJoinColumns={@ORM\JoinColumn(name="idRole", referencedColumnName="id")}
* )
* @Annotation\Type("Zend\Form\Element\ObjectSelect")
* @Annotation\Required({"required":"true"})
* @Annotation\Options({"label":"Rol","target_class":"Auth\Entity\User\Roles","property":"name"})
* @Annotation\Attributes({"class":"form-control"})
**/
private $roles;
public function __construct() {
$this->roles = new ArrayCollection();
}
public function getRoles()
{
return $this->roles->getValues();
}
AdminController 추가 조치 :
public function addUserAction() {
$view = new ViewModel();
$userEntity = new User();
$em = $this->entityManager();
$builder = new DoctrineAnnotationBuilder($em);
$form = $builder->createForm($userEntity);
$form->setHydrator(new DoctrineHydrator($em, 'Users\Entity\User'));
$form->bind($userEntity);
$request = $this->getRequest();
if ($request->isPost()) {
$form->setData($request->getPost());
if ($form->isValid()) {
$em->persist($userEntity);
$em->flush();
}
}
$view->form = $form;
return $view;
}
그리고 내보기 :
$form = $this->form;
$form->setAttribute('action', $this->url('admin', array('action' => 'addUser')));
$form->prepare();
echo $this->form()->openTag($form);
echo $this->formRow($form->get('username'));
echo $this->formRow($form->get('email'));
echo $this->formRow($form->get('roles'));
echo $this->formSubmit($form->get('submit'));
echo $this->form()->closeTag();