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

如何在Zend框架中使用现有的装饰器?

  •  0
  • prostynick  · 技术社区  · 13 年前

    以下代码:

    $this->addElement('text', 'email', array(
        'label' => 'Your email address:',
    ));
    
    $this->addElement('submit', 'submit', array(
        'label' => 'Sign Guestbook',
    ));
    

    生成以下HTML:

    <form enctype="application/x-www-form-urlencoded" action="" method="post">
        <dl class="zend_form">
            <dt id="email-label">
                <label for="email" class="optional">Your email address:</label>
            </dt>
            <dd id="email-element">
                <input type="text" name="email" id="email" value="" />
            </dd>
    
            <dt id="submit-label">
                &#160;
            </dt>
            <dd id="submit-element">
                <input type="submit" name="submit" id="submit" value="Sign Guestbook" />
            </dd>
        </dl>
    </form>
    

    我知道,我可以编写自己的装饰器,但我想知道如何使用现有的装饰器来创建以下HTML:

    <form enctype="application/x-www-form-urlencoded" action="" method="post">
        <div>
            <label for="email" class="optional">Your email address:</label>
            <input type="text" name="email" id="email" value="" class="my_class" />
        </div>
    
        <div>
            <input type="submit" name="submit" id="submit" value="Sign Guestbook" class="my_class" />
        </div>
    </form>
    

    <dl/> , <dt/> , <dd/> ,补充说 class 属性。

    例如,我知道如何消除周围环境 <DL/> 标签:

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

    是否可以进行其他更改 没有 写定制装饰?

    2 回复  |  直到 13 年前
        1
  •  1
  •   zerkms    13 年前

    此(将此数组附加到参数数组中,该数组现在只包含一个标签选项)对电子邮件字段有帮助:

    'class' => 'my_class',
    'decorators' => array(
        'ViewHelper',
        'Errors',
        'Label',
        array('HtmlTag', array('tag' => 'div'))
    )
    

    同样没有 Label -提交。

        2
  •  1
  •   Sebastian Hoitz    13 年前

    可以使用htmltag decorator并传递要用作参数的标记。

    这里列出了所有可用的装饰师: http://framework.zend.com/manual/en/zend.form.standardDecorators.html