2012-10-03 26 views
5

Ben o sadece bir 3 bu formları iki olası hatalar daha sonra var 0. farklı bir değeri içerebilir ediyorum 5 metin formu nispi filtrelerzf2 doğrulama formu: Bağımlı alanları nasıl doğrulayabilirim?

foreach(...) 
    $input = new Input($elementName); 
    $validator = new ValidatorChain(); 
    $validator->addByName('Int') 
     ->addByName('Between', array(
      'min'=>0, 
      'max'=>$this->maxAllowedTicket, 
      'inclusive'=>true)); 
    $filter = new FilterChain(); 
    $filter->attachByName('Int'); 

    $input->setValidatorChain($validator); 
    $input->setFilterChain($filter); 

ile

$number1 = new Text('number-1'); 
$number2 = new Text('number-2'); 
$number3 = new Text('number-3'); 
.... 

var.

ÇOK FAZLA NUMARALARI

$data['number1'] = 5; 
$data['number2'] = 5; 
$data['number3'] = 0; 
$data['number4'] = 5; 
$data['number5'] = 0; 

Aynı zamanda bu birden çok alan doğrulamak nasıl

$data['number1'] = 0; 
$data['number2'] = 0; 
$data['number3'] = 0; 
$data['number4'] = 0; 
$data['number5'] = 0; 

YOK SAYISI?

cevap

17

Bunu yapmak için kendi Validator sınıfınızı yazmanız gerekiyor. Yeni doğrulama sınıfınızın isValid() yöntemi de tüm formun değerlerini içeren $context'u alır. Bu şekilde, diğer alanlara bağlı olarak her alanın değerini doğrulayabilirsiniz.

namespace My\Validator; 
use Zend\Validator\AbstractValidator; 

class CustomValidator extends AbstractValidator 
{ 
    public function isValid($value, $context = null) 
    { 
     // put your logic here and call 
     // $this->error(); if required 
    } 
} 
+0

teşekkür ederim! çalışır, ancak bu çeviriyi ValidatorPluginManager'da nasıl kaydedebilirim? – chrvadala

+0

hangi çevirmen? –

+1

dunno, bunu kullanmadan, ancak tam bir classname (string) giriş belirtecinde doğrulayıcı için bir ad olarak iletebilirsiniz –