douxun4173 2009-12-07 11:28 采纳率: 0%
浏览 41
已采纳

Zend_Form超越默认装饰器

I am having trouble over ridding the default set of decorators with Zend_Form.

I am attempting to extend Zend_Form in order to implement a different decorator style.

class CRM_Form extends Zend_Form
{
 public function init()
 {  
  $this->setDisableLoadDefaultDecorators(true);

  $this->addDecorator('FormElements')
->addDecorator('Form');

  $this->setElementDecorators(array(
  'ViewHelper',
  'Label',
 'Errors',
   new Zend_Form_Decorator_HtmlTag(array('tag' => 'p'))
  ));
 }
}

When I attempt to make use of this class like so:

$form = new CRM_Form();
$form->setAction('/')->setMethod('post'); 
$id = $form->createElement('text','id')->setLabel('ID:');
$form->addElement($id);

The old decorators are used (definition list) rather than my paragraph style.

If I addElement()'s in the init() method of the CRM_Form class they use the style that I have set.

How can I force all elements created using that class to use my default style?

  • 写回答

3条回答 默认 最新

  • dougan4884 2009-12-07 13:22
    关注

    Zend Form is decorating the Elements after you add them. So create an method like "addAndDecorte":

    public function addAndDecorate($element) 
    {
       $this->addElement($element);
    
       // do your decorating stuff..
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)