2010-06-08 5 views
1

이것은 올바른 출력을 생성하고 올바른 유효성 검사를 제공하기 위해 Zend Form을 가져 오는 데 어려움을 겪고있는 매우 구체적인 경우입니다. 복합 요소를 만들어야 할 수도 있지만 먼저 여기에서 물어볼 것이라고 생각했습니다. 여기 젠드 폼 (Zend Form)을 만들기 위해 노력하고있는 HTML이 있습니다. 유효성 검사에서 오류 메시지가 여전히 오류를 생성 한 필드와 인라인으로 표시되는 것을 통과하지 못하는 경우이 작업을 수행 할 수 있기를 바랍니다.Zend Form -이 사용자 정의 양식 요소는 어떻게 작성합니까?

<tr> 
    <td>Budget</td> 
    <td> 
     <input type="radio" name="budget" value="unlimited" /> unlimited 
     <br /> 
     <input type="radio" name="budget" value="limited" /> $ <input type="text" name="budget_amount" /> every <select name="budget_period"> 
      <option value="day">day</option> 
      <option value="week">week</option> 
      <option value="month">month</option> 
      <option value="year">year</option> 
     </select> 
    </td> 
</tr> 
<tr> 
    <td></td> 
    <td><input type="checkbox" name="include_weekends" value="yes" /> include weekends?</td> 
</tr> 

사용자들은 제한된 선택하는 경우, 그들은 예산에 대한 선택에서 예산 금액 필드에 대한 값을 입력하고 값을 선택해야하지만, 제한 또는 예산 값을 제한 중 하나를 선택할 수 있습니다 기간 필드.

답변

0

많은 조정을 한 후에 그것을 생각해 냈습니다. 그러나 그 대답이 다른 사람을 도울 수 있기를 바랍니다. 예산 값에 대한 유효성 검사 (양식의 isValid() 함수를 재정 의하여 작동하지만 이제는 사용자 정의 유효성 검사기로 가져 오려고 시도 함)에 대한 작업을 수행하고 있기 때문에 데코레이터 항목을 게시하려고합니다.

$this->setElementDecorators(array(
     'ViewHelper', 
     array(array('data' => 'HtmlTag'), array('tag' => 'td')), 
     array('Label', array('tag' => 'td')), 
     array(array('row' => 'HtmlTag'), array('tag' => 'tr')) 
    )); 

    $budget->setDecorators(array(
     'ViewHelper', 
     array(array('openData' => 'HtmlTag'), array('tag' => 'td', 'openOnly' => true)), 
     array('Label', array('tag' => 'td')), 
     array(array('openRow' => 'HtmlTag'), array('tag' => 'tr', 'openOnly' => true)) 
    )); 

    $budgetAmount->setDecorators(array(
     'ViewHelper' 
    )); 

    $budgetPeriod->setDecorators(array(
     'ViewHelper', 
     array('AnyMarkup', array('markup' => 'every', 'placement' => 'PREPEND')), 
     array(array('closeData' => 'HtmlTag'), array('tag' => 'td', 'closeOnly' => true)), 
     array(array('closeRow' => 'HtmlTag'), array('tag' => 'tr', 'closeOnly' => true)) 
    )); 

    $includeWeekends->setDecorators(array( 
     'ViewHelper', 
     array('Label', array('placement' => 'APPEND')), 
     array(array('data' => 'HtmlTag'), array('tag' => 'td')), 
     array(array('emptyRow' => 'HtmlTag'), array('tag' => 'td', 'placement' => 'PREPEND')), 
     array(array('row' => 'HtmlTag'), array('tag' => 'tr')) 
    )); 

    $this->setDecorators(array(
     'FormElements', 
     array('HtmlTag', array('tag' => 'table')), 
     'Form', 
     array('FormErrors', array('placement' => 'PREPEND', 'class' => 'error')), 
     array('Description', array('placement' => 'PREPEND')) 
    )); 
관련 문제