다 대다수의 관계를 나타내는 다중 선택 양식 요소에서 값을 미리 선택할 수 없습니다.ZF2 다중 선택 서식 사전 선택 값 ManyToMany
내 모델에는 적절한 데이터가 있습니다. 올바른 CampsTypes를 포함하지만 올바른 선택 항목을 미리 선택하기 위해 다중 선택을 사용할 수없는 형태의 ArrayCollection입니다.
관리자 모델
/**
* @var ArrayCollection CampsTypes $campstypes
*
* @ORM\ManyToMany(targetEntity="CampsTypes", inversedBy="admins", cascade={"persist"})
* @ORM\JoinTable(name="campstypes_admins",
* joinColumns={@ORM\JoinColumn(name="admins_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="campstypes_id", referencedColumnName="id")}
* )
*/
private $campstypes;
마침내 여기
[
'type' => 'DoctrineModule\Form\Element\ObjectSelect',
'name' => 'campTypes',
'required' => false,
'options' => [
'object_manager' => $this->getServiceLocator()->get(EntityManager::class),
'target_class' => CampsTypes::class,
'property' => 'title',
'label' => 'Type de camps autorisés',
'instructions' => 'Ne rien sélectionner si edition d\'un super admin',
],
'attributes' => [
'class' => '',
'multiple' => 'multiple',
]
],
를 수행하고
/**
* @var ArrayCollection Admins $admins
*
* @ORM\ManyToMany(targetEntity="Admins", mappedBy="campstypes", cascade={"persist"})
*/
private $admins;
가 그럼 난 내 양식을 선택 요소를 정의 CampsType 모델은을받을 수있는 내 작업입니다 양식
protected function saveAdmin(Admins &$admin, &$form, &$msg)
{
$em = $this->getEntityManager();
/** @var CampTypesService $serviceCampTypes */
$serviceCampTypes = $this->getServiceLocator()->get(CampTypesService::class);
$form->bind($admin);
if ($this->getRequest()->isPost()) {
$data = $this->getRequest()->getPost();
if (empty($data['password'])) {
$form->remove('password');
}
$form->setData($data);
if ($form->isValid()) {
if (isset($data['campTypes'])) {
$ids = $form->get('campTypes')->getValue();
$campsTypes = new ArrayCollection($serviceCampTypes->getCampTypesByIds(array_values($ids)));
foreach ($campsTypes as &$campsType) {
/** @var CampsTypes $campsType*/
$campsType->addAdmin($admin);
}
$admin->setCampTypes($campsTypes);
}
$em->persist($admin);
$em->flush();
$msg = 'Sauvegarde des données effectuée';
return;
}
}
return;
}
나는 해결책을 찾고 있습니다.
내가 뭘 잘못하고 있는지 알기!
감사합니다. 나는 빨간색이 아니었지만 실제로는 ObjectSelect를 사용하려고합니다. 실제로 해결책을 찾았으므로 해답을 게시 할 것입니다. – ddattee
내가 아는 공장에 관해서는 공장을 만들어야하지만 Magento 2와 Symfony에서 약간의 의존성이 생겨 나는 모든 클래스의 공장을 매우 비효율적으로 만드는 것으로 나타났습니다. 또한 ZF2가 출시되었을 때이 프로젝트가 시작되었으므로 리콜로 멘 테이션이 서비스 위치 지정자를 사용하는 것이었지만 어느 시점에서 직접 정리해야합니다. – ddattee