2017-03-21 8 views
-3

enter image description here젠드 양식 2를 사용하여 중첩 된 필드 세트를 생성하려면 어떻게해야합니까?

안녕하세요!

1. dependent_features[0], 2. dependent_features[1] etc 

과 같이 독립적 인 기능을 해당 : : 이제

1. independent_features[0][], 2. independent_features[1][] etc. 

, 어떻게이를 생성 할 수 있습니다 I는 입력 필드 2. 젠드 프레임 워크를 통해 위의 이미지와 같은 형태가 같은 것 만들 싶어 컬렉션 입력 필드 및 유효성 검사 양식이있는 종류의 양식?

+1

시도해 보셨습니까? 우리는 당신을 위해 당신의 코드를 쓰지 않을 것이고, 문제가 조금 좁혀 질 때까지 우리는 도울 수 없습니다. – Feathercrown

+0

ZF2에서 ZF2의 fieldset에 사용할 수있는 문서는 위의 동료가 말한대로 무엇을 시도했는지 묻기 전에 어디에서 검색 했습니까? – Hooli

+1

zf2 컬렉션을 통해 생성하려고했지만 미안하지만 아무것도 결실이 없다. 필드 'independent_features'는 인덱스 방식으로 'dependent_features'에 직접 종속됩니다. 즉, 'independent_features [__ KEY __] []'은 'dependent_features [__ KEY__]'에 직접 종속됩니다. 그래서 collection 요소를 통해 이런 종류의 형식을 생성하는 방법을 알지 못했습니다. 제발 도와주세요. –

답변

1

젠드 양식이 HTML을 정의 할 수 있습니다,

먼저 https://docs.zendframework.com/zend-form/collections/#creating-fieldsets를 참조하십시오. (다른 방법은 아닙니다.)

예를 들어 ParentContainer의 클래스를 정의 할 수 있습니다. 여기에는 DependentFeature 필드 집합이 포함됩니다. 각 DependentFeature Fieldset에는 Select 요소와 IndependentFeature Fieldsets의 Collection이 있습니다. 각 IndependentFeature Fielset에는 하나의 Select 요소가 있습니다.

결과 HTML은 다음과 같이 나왔다 : 즉

dependentFeatures[0][dependentFeature] 
dependentFeatures[0][independentFeatures][0][independentFeature] 
dependentFeatures[0][independentFeatures][1][independentFeature] 
dependentFeatures[0][independentFeatures][2][independentFeature] 

dependentFeatures[1][dependentFeature] 
dependentFeatures[1][independentFeatures][0][independentFeature] 
dependentFeatures[1][independentFeatures][1][independentFeature] 
dependentFeatures[1][independentFeatures][2][independentFeature] 

는, 둥지, 요소를 컬렉션을 정의하고, 젠드 당신을위한 HTML 작업을 할 수 있습니다.

/** 
* @Annotation\Name("parentContainer") 
* @Annotation\Hydrator({"type":"Zend\Hydrator\ClassMethods", "options": {"underscoreSeparatedKeys": false}}) 
*/ 
class ParentContainer 
{ 

    /** 
    * @Annotation\ComposedObject({ 
    * "target_object":"DependentFeature", 
    * "is_collection":"true", 
    * "options":{"count":2} 
    * }); 
    * 
    * @var DependentFeature[] 
    */ 
    private $dependentFeatures; 
} 

/** 
* @Annotation\Name("dependentFeature") 
* @Annotation\Hydrator({"type":"Zend\Hydrator\ClassMethods", "options": {"underscoreSeparatedKeys": false}}) 
* @Annotation\Instance("DependentFeature") 
* @Annotation\Type("Zend\Form\Fieldset") 
*/ 
class DependentFeature 
{ 

    /** 
    * @Annotation\Type("Zend\Form\Element\Select") 
    * @Annotation\Options({"label":"Dependent Feature:"}) 
    */ 
    private $dependentFeature; 

    /** 
    * 
    * @Annotation\ComposedObject({ 
    * "target_object":"IndependentFeature", 
    * "is_collection":"true", 
    * "options":{"count":3} 
    * }); 
    * 
    * @var IndependentFeature[] 
    */ 
    private $independentFeatures; 
} 

/** 
* * 
* @Annotation\Name("independentFeature") 
* @Annotation\Hydrator({"type":"Zend\Hydrator\ClassMethods", "options": {"underscoreSeparatedKeys": false}}) 
* @Annotation\Instance("IndependentFeature") 
* @Annotation\Type("Zend\Form\Fieldset") 
*/ 
class IndependentFeature 
{ 

    /** 
    * @Annotation\Type("Zend\Form\Element\Number") 
    * @Annotation\Options({"label":"Independent Feature:"}) 
    */ 
    private $independentFeature; 
} 

은과 같이 양식을 작성 : 이런 일을 할 수 있는지 젠드 양식 주석을 사용하여

당신이 주석을 사용하지 않는 경우

$form = (new AnnotationBuilder())->createForm(ParentContainer::class); 

을, 당신은 아직도 내가 언급 한 바와을 구축 할 수 있습니다 위 -> 중첩하여 필드 집합의 컬렉션 당신에게 필드 집합의 컬렉션.

정확한 도메인 요구 사항에 따라 요소의 이름과 중첩 정도가 달라집니다.

+0

필드 이름을 기능 [0] [종속] 및 기능 [0] [독립] [] 및 이와 유사하게 생각하고 있습니다. 너는 어떻게 생각하니, 괜찮아? –

+0

가능합니다. 정확한 코딩 상황에 따라 다를 수 있습니다. 업데이트 된 답변에서 내가 한 일을 볼 수 있습니다. – Dennis

+0

이전에 특수 효과를 사용하지 않았지만 시도해 보겠습니다! 당신의 도움을 주셔서 감사합니다! –