代码之家  ›  专栏  ›  技术社区  ›  jantimon

Zend Decorators-删除DT包装的Id字段

  •  1
  • jantimon  · 技术社区  · 14 年前

    <dl class="zend-form">
      <dt id="title-label">
        <label for="form1-title" class="required">Description</label>
      </dt>
      <dd id="title-element">
        <input name="form1[title]" id="form1-title" value="..." type="text">
      </dd>
    </dl>
    

    我还尝试更改元素装饰器:

    $this->addElements( ... );
    $this->setElementDecorators(array(
            'ViewHelper',
            'Errors',
            array(array('data' => 'HtmlTag'),array( 'tag' => 'dd', 'class' => 'element' )),
            array(array('data' => 'Label'),array( 'tag' => 'dt', class=> 'label' ))
      ));
    

    一个标签被添加到我的提交按钮和 dt元素的id仍然存在。

    如何删除id属性?


    编辑-元素声明:

        $titel = new Zend_Form_Element_Text('title');
        $titel->setLabel( "Title" )
              ->addValidator('NotEmpty', true)
              ->addValidator('stringLength',true, array(0, 255 ))
              ->setRequired(true)
              ->addFilter("Alnum", array(true))
              ->addFilter('StringTrim');
    
        $this->addElement($titel);
    
    2 回复  |  直到 13 年前
        1
  •  1
  •   allnightgrocery    14 年前

    这听起来更像是你的子窗体没有在ID前面加上它们的名字。如果你解决了这个问题,你就不需要删除ID了。

    但是,如果您想使用DtDdWrapper decorator从元素中删除ID,您可以这样做。

    class Form_Foo extends Zend_Form_SubForm
    {
        public function init()
        {
    
            $title = new Zend_Form_Element_Text('foo_title');
            $title->setLabel('Title');
            $title->removeDecorator('DtDdWrapper');
            $title->addDecorator(new Decorator_Foo());      
            $this->addElement($title);
        }
    }
    
    class Decorator_Foo extends Zend_Form_Decorator_DtDdWrapper
    {
        public function render($content)
        {
            return '<dt>&nbsp;</dt>' .
                   '<dd>' . $content . '</dd>';
        }
    }
    

    这样就可以得到没有ID标记的元素。

        2
  •  0
  •   tom    14 年前

    可以创建自定义标签装饰器,以便修改默认的渲染函数。

    class App_Form_Decorator_Label extends Zend_Form_Decorator_Label
    {
    
        public function render()
        {
            // Insert here the render function of Zend_form_Decorator_Label but without the id decorator.
        }
    }