2014-02-26 9 views
1

유효성 검사기에 전체 양식을 컨텍스트로 전달할 수 있습니까?필드 세트 또는 콜렉션을 사용할 때 ZF2 유효성 검사기 컨텍스트

I 다른 FIELDSET의 B.에 원소 (Y)의 값을 확인 FIELDSET A의 원소 X에 대한 조건 검사기를 작성하고자

문제는 isValid 기능 만 FIELDSET의 컨텍스트를 수신한다는 것이다 그것 이 요소 X는 요소 Y에 대해 아무것도 모릅니다.

모든 답변을 크게 받았습니다!

답변

2

컬렉션과 ZendCollectionInputFilter에서이를 수행 할 수 있습니다. 이것에 대한 문서의 부하처럼이 아니다

는 젠드 사람은 생각이 밖으로 정렬 알고 (이 http://framework.zend.com/apidoc/2.2/classes/Zend.InputFilter.CollectionInputFilter.html에의 유일한 언급 생각)하지만 정말 도움이 지금 자원이 있었다 :

http://www.aronkerr.com/2013/11/zf2-form-collection-validation-unique.html

매우 영리한 물건 일단 당신이 당신의 머리를 이것들을 얻을. 질문이 매우 구체적이지 않고 현재 구현 한 양식, 필드 세트 및 입력 필터에 대한 코드가 없지만 이것이 도움이되기를 바랍니다. 좀 더 구체적인 코드를 실행하는 것보다 어느 지점에서든 행복하게 지내면

+0

감사합니다. @Jon - 그 가이드는 내가 찾고 있던 것입니다. –

0

필드 세트 A와 B가 Sample 양식에 속한다고 가정 해 보겠습니다. 자식 필드 셋의 유효성을 검사 할 때 우리는이 양식의 컨텍스트를 액세스하기 위해이 부모 폼에서 유효성 검사기를 추가해야

<?php 

namespace App\Form; 

use Zend\Form\Form; 
use Zend\InputFilter\InputFilterProviderInterface; 

class Sample extends Form InputFilterProviderInterface 
{ 
    public function init() 
    { 
     $this->add([ 
      'type' => 'App:Fieldset:A', 
      'name' => 'fieldsetA', 
     ]); 

     $this->add([ 
      'type' => 'App:Fieldset:B', 
      'name' => 'fieldsetB', 
     ]); 

     $this->add([ 
      'type' => 'submit', 
      'name' => 'submit', 

      'attributes' => [ 
       'value' => 'Submit', 
      ], 
     ]); 
    } 

    public function getInputFilterSpecification() 
    { 
     return [ 
      'fieldsetA' => [ 
       'type' => 'InputFilter', 

       'X' => [ 
        'required' => true, 
        'allow_empty' => true, 
        'continue_if_empty' => true, 

        'validators' => [ 
         [ 
          'name' => 'Callback', 
          'options' => [ 
           'callback' => function ($value) 
           { 
            if ($this->data['fieldsetB']['Y']) 
            { 
             // do something 
            } 
            // do something else 
           }, 
          ], 
         ], 
        ], 
       ], 
      ], 
     ]; 
    } 
} 

공지 사항 우리는 InputFilter 유형을 사용하여 내 Sample에서의 X에 유효성 검사기를 추가하는 방법에 대해 설명합니다. 다음으로 우리는 $this->data에 직접 접속하고 그것을 통과하여 Y를 얻습니다.