2010-03-02 106 views
1

我已经以这种方式设置表单装饰:如何使用标准装饰器来装饰“错误”?

<?php 

    $this->setElementDecorators(array(
      'Label', 
      array(array('labelTd' => 'HtmlTag'), array('tag' => 'td', 'class' => 'name')), 
      array(array('elemTdOpen' => 'HtmlTag'), array('tag' => 'td', 'class' => 'form','openOnly' => true, 'placement' => 'append')), 
      'ViewHelper',    
      'Errors',   
      array(array('elemTdClose' => 'HtmlTag'), array('tag' => 'td', 'closeOnly' => true, 'placement' => 'append')), 
      array(array('row' => 'HtmlTag'), array('tag' => 'tr', 'class' => 'question')), 
    )); 

    $submit->setDecorators(array('ViewHelper', 
      array(array('data' => 'HtmlTag'), array('tag' =>'td', 'class'=> 'element')), 
      array(array('emptyrow' => 'HtmlTag'), array('tag' =>'td', 'class'=> 'element', 'placement' => 'PREPEND')), 
      array(array('row' => 'HtmlTag'), array('tag' => 'tr')) 
      )); 

    $this->setDecorators(array(
      'FormElements', 
      array('HtmlTag', array('tag' => 'table', 'class' => 'simpleform')), 
      'Form' 
     )); 

它输出一个简单的表格

<table class="simpleform"> 
<tbody> 
    <tr class="question"> 
     <td class="name"> 
      <label class="required" for="email">Your email</label> 
     </td> 
     <td class="form"> 
      <input type="text" value="asasd" id="email" name="email"> 
      <ul class="errors"> 
       <li>'asasd' is no valid email address in the basic format [email protected] 
       </li> 
       <li>Information not found 
       </li> 
      </ul> 
     </td> 
    </tr> 
    <tr> 
     <td class="element"></td> 
     <td class="element"> 
      <input type="submit" value="Send" id="submit" name="submit"> 
     </td> 
    </tr> 
</tbody> 
</table> 

我想换ul.errors到TD,并把它作为第三细胞。 那样:

 <tr class="question"> 
     <td class="name"> 
      <label class="required" for="email">Your email</label> 
     </td> 
     <td class="form"> 
      <input type="text" value="asasd" id="email" name="email"> 
     </td> 
     <td> 
      <ul class="errors"> 
       <li>'asasd' is no valid email address in the basic format [email protected] 
       </li> 
       <li>Information not found 
       </li> 
      </ul> 
     </td> 
    </tr> 

和..怎么办? :)

+0

嗨,我需要一个相同的代码,如果你可以创建一个错误装饰器,请在这里显示你的代码 – ulduz114 2010-03-13 14:08:44

+0

对不起,ulduz114。我无法:( – kubum 2010-03-17 16:52:15

回答

1

我建议你创建你自己的错误装饰器,它将做你所需要的。
例如,您可以将其设置为输出

</td> 
    <td> 
     <ul class="errors"> 
      <li>'asasd' is no valid email address in the basic format [email protected] 
      </li> 
      <li>Information not found 
      </li> 
     </ul> 

如果你知道错误总是会内<td></td>标签是表的一部分。

一般来说,没有框架足够灵活以覆盖所有场景,并且框架不应该在开发过程中放缓速度。如果你不能使用框架做某些事情,并且你不能扩展框架来满足你的需求,那么在它的情况下不要使用它。这并不是说所有的表格都必须使用Zend_Form :)