Symfony 프로젝트에서 FormEventSubscriber를 여러 가지 형태로 사용합니다.FormField에서 FormField에 전달 된 옵션 얻기
이미 채워진 각 입력란을 사용 중지하는 것이 목표입니다. 내가 사용하는 가입자에
:$childOptions = $child->getConfig()->getOptions();
나는 아이에 대한 모든 해결 옵션을받을, 나는 양식 건물 중 통과 만 얻을 싶어요. (일부 FormType (i.o. DocumentType)을 양식하기 때문에 모든 해결 옵션을 재 분사 할 수 없기 때문에 문제가 발생합니다.
FormType 예 :
가입자는 :
class ChangesSubscriber implements EventSubscriberInterface { // Disables filled inputs public function postSetData(FormEvent $event) { $form = $event->getForm(); foreach($form->all() as $child) { $childName = $child->getName(); $childType = $child->getConfig()->getType()->getName(); // Here I receive all resolved options // But I only want the options passed above during 'buildForm' ('class','choice_label') : $childOptions = $child->getConfig()->getOptions(); if(!$child->isEmpty()){ $form->add($childName,$childType,array_merge($childOptions,array('disabled'=>true))); } } } }
이것은 많은 사용 사례의 일 예이며, 다른 예는 같을 수 Alsatian\FormBundle ExtensibleSubscriber
-> AJAX가 선택/실체/문서 유형에 대한 선택을 수락 할 수 있도록 서류 작성자. 지금까지 알 수 있듯이 몇 가지 해결 옵션 만 선택했지만이 솔루션에 만족하지 않습니다.
아마도 전역 양식이 아닌 필드 자체에 구독자를 추가해야합니다. $ builder-> get ("entity") -> addEventSubscriber ($ this-> changesSubscriber)'를 호출하십시오. 그에 따라 구독자를 수정해야하므로 아마 더 이상 반복 할 필요가 없습니다. – VaN
가입자가 아이에있을 때, 아이를 '다시 만들 수 없습니다.'옵션을 편집하여 '비활성화 됨'을 추가 할 수 없습니다. – Alsatian
구독자 대신 양식 유형 확장을 사용 해본 적이 있습니까? – Heah