2017-03-13 16 views
1

:어노테이션을 사용할 때 Zend Form의 Collection Fieldset 수를 어떻게 바꿀 수 있습니까? <a href="https://docs.zendframework.com/zend-form/quick-start/#using-annotations" rel="nofollow noreferrer">https://docs.zendframework.com/zend-form/quick-start/#using-annotations</a>에서

Zend\Form\Annotation를 사용하여 통해,이 지침을 발행 할 수 있습니다 :

/** 
* @ComposedObject({ 
*  "target_object":"Namespace\Model\ComposedCollection", 
*   "is_collection":"true", 
*   "options":{"count":2} 
*  }); 
*/ 
private $property; 

무엇이하는 일은 크기 2의, 위의 경우에, ComposedCollection 요소의 컬렉션을 만들 수 있습니다.

2 개의 요소가있는 정적 양식이 필요할 때 유용하지만 동적으로 변경하려는 경우 어떻게 변경합니까? 즉, 내부적으로 4 ~ 5 세트의 데이터로 폼을 채울 수 있기를 원합니다. 그 번호는 미리 알 수 없습니다.

어노테이션 사용은 정적이지 동적이지 않습니다. 이 일을 할 수있는 방법이 있습니까?

내가

$form->get("element_name")->setOption("count", $numericValue); 

를 사용하여 시도했지만 나는 그것을 사용하고있는 시간으로 추측하고 있기 때문에, 작동하지 않습니다, 양식이 이미 주석 엔진에 의해 구축 된 ($annotationBuilder->createForm(MyEntity::class);

인가 이 양식을 다시 작성하는 방법?

내가 $form->prepare()

을 시도했지만 그것이 실제로 내 콜레을 제거 대신 ction 요소.

나는 또한 $form->init()을 시도했지만 아무것도하지 않는 것처럼 보입니다.

주석을 사용하지 않는 형식을 다시 작성하는 중이지만 프로그래밍 방식으로 다시 작성하여 엔터티를 잃어 버리고 있기 때문에 성취하려는 것이 아닙니다.

답변

0

Collection::setCount() 방법을 사용하십시오.

$form->get("element_name")->setCount($numericValue); 

또한 필드 세트를 프로그래밍 방식으로 정의 할 수 있습니다. $property@Annotation\Exclude()을 놓고 그래서 같은 필드 집합을 만듭니다

$c = new Element\Collection('collection'); 
    $c->setOptions([ 
     'label' => 'Collection', 
     'count' => 1 , 
     'should_create_template' => true, 
     'allow_add' => true, 
     'target_element' => [ 
      'type' => ComposedCollectionFieldset::class 
     ] 
    ]); 

ComposedCollectionFieldset는 당신이 필요로하는 Elements 어디가 포함되어 있습니다.