2012-11-01 24 views
10

Có cách nào để vô hiệu hóa notInArray Validator trong Zend Framework 2. Tất cả các thông tin trên mạng Internet cho thấy làm thế nào để vô hiệu hóa các notInArray Validator trong Zend Framework 1, ví dụ như trong thời trang nàyDisable notInArray Validator Zend Framework 2

Nếu bạn không muốn trình xác nhận InArray ở tất cả, bạn có thể vô hiệu hóa hành vi này bằng cách gọi setRegisterInArrayValidator (false) trên phần tử hoặc bằng cách chuyển false đến khóa cấu hình registerInArrayValidator khi tạo phần tử.

Một các bài đăng trong stackoverflow có thể tìm thấy here

Đáng tiếc là điều này không thể trong Zend Framework 2. Vì vậy, trong trường hợp nếu ai có một lời khuyên như thế nào điều này có thể bị vô hiệu.

+0

Erm, xác nhận được chỉ kèm theo nếu bạn nói với họ. Bạn muốn trình xác nhận hợp lệ ở đâu chính xác? Câu hỏi của bạn đơn giản là không rõ ràng, vui lòng cập nhật để mọi người có thể hiểu rõ hơn về hình dáng của bạn – Sam

+0

Xin chào Sam! Tôi có một lựa chọn không có validator ở tất cả nhưng ZF2 tiếp tục nói rằng 'đầu vào không được tìm thấy trong haystack'. Tại sao điều này xảy ra? – vinigarcia87

+0

Điều này Không có trong mảng là trình xác nhận mặc định – tawfekov

Trả lời

0

Tôi có cùng trường hợp: trong khi tôi đang điền phần tử chọn html qua ajax sau khi tìm kiếm không tìm thấy cách nào để kết thúc việc tạo phần tử biểu mẫu chọn của riêng mình, tôi sẽ cung cấp cho bạn các thay đổi của tôi:

/** 
    * Provide default input rules for this element 
    * 
    * Attaches the captcha as a validator. 
    * 
    * @return array 
    */ 
    public function getInputSpecification() 
    { 
     $spec = array(
      'name' => $this->getName(), 
      'required' => true, 
      //// make sure to delete the validators array in the next line 
      'validators' => array( 
       $this->getValidator() 
      ) 
     ); 

     return $spec; 
    } 
2

tôi đã cùng một vấn đề và những gì tôi đã làm là cư nguyên tố này trước khi xác nhận nó, ví dụ:

$clientForm->get('city')->setValueOptions($options); 
$clientForm->setData($post); 

if ($clientForm->isValid()) { 
    // 
} else { 
    // 
} 

này không vô hiệu hóa notInArray valitador nhưng bạn có thể đánh lừa nó.

0

Tôi thấy điều này tại liên kết này và nghĩ rằng tôi sẽ gửi nó như tôi tìm thấy nó một giải pháp tuyệt vời .... http://samsonasik.wordpress.com/2012/10/01/zend-framework-2-extending-zendform-to-add-select-multicheckbox-emaildate-textarea-and-radio-element/

đừng cố Deactive validator mặc định. tái giá trị các giá trị tùy chọn đã chọn trước khi setData.

$form->get('state_id') 
    ->setOptions(
      array('value_options'=> $Newstatecollection)) ; 

Saves the mess của Tăt chức năng nếu bạn cần nó ở nơi khác

9

Kể từ phiên bản 2.2, Zend Framework cung cấp khả năng disable validator inArray gọi:

$element->setDisableInArrayValidator(false); 

hoặc đi tùy chọn thành một phần tử:

'disable_inarray_validator' => false 
+0

Điều này chỉ vô hiệu hóa các tin nhắn ...... –

+4

Được rồi, nhưng hơi khác một chút. Để vô hiệu hóa bạn nên ''disable_inarray_validator' => true', vì hai lần phủ nhận là phê duyệt. – zeliboba

0

Nếu bạn không cần phải xác nhận ở tất cả, thêm required => false trong InputFilter

$this->add(array(
     'name' => 'your-elements-name', 
     'required' => false, 
    )); 

làm việc cho tôi ..

Các vấn đề liên quan