문제 : $ form-> bind ($ object)를 사용할 때 양식의 여러 필드 세트가 채워지거나 수화되지 않았습니다. 서로 다른 두 개의 엔티티 객체를 사용하여 양식에 두 개의 다른 필드 세트를 채우는 방법은 무엇입니까? FieldsetA, FieldsetBzf2/zf3 객체가있는 다중 필드 세트 수화
양식 RegisterFrom가 초기화 이러한 호출() 메소드
class RegisterForm extends Form
{
public function init(){
$this->add(array(
'name' => 'service_provider_fieldset',
'type' => ServiceProviderFieldset::class, // this is one model/entity
));
$this->add(array(
'name' => 'location_fieldset',
'type' => LocationFieldset::class, // this is a separate model/entity
));
}
}
이 필드 셋을 만들기 : (수화에 유의 주석 시도)
class ServiceProviderFieldset extends Fieldset
{
public function init(){
//parent::__construct($name);
/*
$this
->setHydrator(new ClassMethodsHydrator(false))
->setObject(new ServiceProvider())
;
*/
/*
$this
->setHydrator(new ReflectionHydrator(false))
->setObject(new ServiceProvider())
;
*/
$this->add(array(
'type'=>'Hidden',
'name'=>'id',
'options'=>array(
'label' => 'Service Provider Id'
),
'attributes'=>array(
'id'=>'providerId'
)
));
}
}
나는이 개 필드 셋이 제어기 :
$provider = $this->findServiceProviderById($providerId); // this is set from DB call and correctly creates a Provider() object with populated values.
$location = $this->findServiceProviderLocationById($locId);
$form = $formManager->get(RegisterForm::class);
$form->bind($provider);
$form->bin($location);
// $form->get('service_provider_fieldset')->bindValues(...);
보기 :
$formElement = $form->get('service_provider_fieldset')->get('email');
etc...
양식이 채워진 데이터없이보기에서 올바르게 렌더링됩니다.
참고 : Doctrine을 사용하지 않고 DB에서 데이터를 검색하면됩니다. 참고 :이 플래그를 'use_as_base_fieldset'=> true로 설정하면 개체 (ServiceProvider) 중 1 개가 채워집니다. 위치 필드를 'true'로 설정하면 해당 개체가 채워집니다. 저는 몇 시간 동안 시행 착오를 거쳤습니다. 성공하기 위해서는 간단한 설정/구성 단계를 놓친 것이 내 피로가되기를 바라고 있습니다.
요약 : 양식 내에 2 개 이상의 엔터티가있는 2 개 이상의 필드 집합을 채우려면 어떻게합니까? 바인딩(), fieldset-> bindValues ()? 시도
는 :
$form->get('service_provider_fieldset')->allowObjectBinding(true);
$form->get('service_provider_fieldset')->allowedObjectBindingClass(\Provider\Form\ServiceProviderFieldset::class);
이들은 가까운 몇 가지 링크하지만 여전히 별도의 기관을 통해 두 필드 세트를 채울 수 없습니다. ZF2 Form Hydration with multiple objects and fieldsets https://framework.zend.com/manual/2.4/en/modules/zend.form.collections.html hydrating multiple objects from fieldsets ZF2
소장품 (제품/브랜드/카테고리) = 예> 진실 바인딩하기 위해 사용되는 'use_as_base_fieldset'를 이용하여 "단일"컬렉션을 의미한다() ...?
업데이트 : 위 링크에서 컬렉션 문서 예제를 사용하여 프로세스를 작동시킬 수있었습니다. 1 : 1, 1 : 많은 관계가있는 모델을 모방 한 단일 필드 세트를 사용하십시오. 질문은 여전히 유효합니다 - 서로 관련이없는 객체로 두 개 이상의 필드 세트를 채우는 방법 –
예제에는 captcha가있는 등록 양식이 포함되어 있습니다. addRecaptcha를 직접 작동하는 양식에 추가하는 기능을 만들 수 있습니다 (그러나 각 양식에 대해이 작업을 반복하거나 [추상 양식을 확장해야합니다]) –
문제를 해결 했습니까? 나는 같은 ... 하나의 제안을 가지고있다. 공장에서 필드 세트를 가져올 때 양식의'init()'이 사용됩니다. 일반 입력 만 있으면 필드 집합 또는 양식의'__construct()'메소드에 포함시킬 수 있습니다. –