2010-06-09 4 views
3

양식 요소가 필요하지 않은 경우에도 유효성 검사기를 실행하는 방법이 있습니까?Zend Framework 양식 요소 검사기 - 필요하지 않은 경우에도 필드 유효성 검사

두 개의 라디오 버튼 인 다른 폼 요소의 값에 특정 값이 선택된 경우 texbox의 내용을 유효하게하려는 양식이 있습니다 (비어 있지 않아야 함). 지금은 내 양식 클래스의 isValid() 함수를 재정 의하여이 작업을 수행하고 있으며 훌륭하게 작동합니다. 그러나이 중 하나를 유효성 검사기로 이동하거나 콜백 유효성 검사기를 사용하고 싶습니다. 내가 지금까지 가지고있는 것이있다. 그러나 다른 폼 요소의 값이 특정 값으로 설정된 경우에만 필드를 항상 setRequired (true)로 변경하지 않는 한 절대로 호출되지 않는다. 값.

// In my form class's init function 
$budget = new Zend_Form_Element_Radio('budget'); 
$budget->setLabel('Budget') 
    ->setRequired(true) 
    ->setMultiOptions($options); 

$budgetAmount = new Zend_Form_Element_Text('budget_amount'); 
$budgetAmount->setLabel('Budget Amount') 
->setRequired(false) 
->addFilter('StringTrim') 
->addValidator(new App_Validate_BudgetAmount()); 

//Here is my custom validator (incomplete) but just testing to see if it even gets called. 
class App_Validate_BudgetAmount extends Zend_Validate_Abstract 
{ 
    const STRING_EMPTY = 'stringEmpty'; 

    protected $_messageTemplates = array(
     self::STRING_EMPTY => 'please provide a budget amount' 
    ); 

    public function isValid($value) 
    { 
     echo 'validating...'; 
     var_dump($value); 
     return true; 
    } 
} 

답변

3

당신이 다음 검사기 (false)를 setRequired 대신에 (false)를 setAllowEmpty를 사용하는 경우 여전히 호출되는 것처럼 보인다.

$budgetAmount->setLabel('Budget Amount') 
    ->setAllowEmpty(false) 
    ->addFilter('StringTrim') 
    ->addValidator(new App_Validate_BudgetAmount()); 

을 그리고```setAllowEmpty (참)```

+0

이 안 좋은 노력하고 있습니다 : 그래서 지금이? – Tom

+0

setAllowEmpty (FALSE)는 오해의 소지가 있습니다. – Chayemor