【问题标题】:How to decorate text element label and input separately?如何分别装饰文本元素标签和输入?
【发布时间】:2012-07-31 04:38:18
【问题描述】:

我有一个这样声明的文本元素:

$name = $this->createElement('text', 'name');
$name->setLabel('imie:');

我想装饰这个元素,让它呈现如下:

<div class="row">
  <span class="label">
    <label for="name" class="highlight">Name</label>
  </span>
  <span class="formw">
    <input type="text"  id="someid" name="name" class="textfield">
  </span>
</div>

我无法让它正常工作。 有人可以帮我设置装饰器吗?

【问题讨论】:

    标签: zend-framework zend-form decorator


    【解决方案1】:

    使用 viewScript 装饰器:

    部分@`views/scripts/_partial.phtml(随便命名)

    <form action="<?php echo $this->element->getAction() ?>"
          method="<?php echo $this->element->getMethod() ?>">
        <div class="row">
            <span class="label">
                <?php echo $this->element->name->renderLabel() //render the label for element ?>
            </span>
            <span class="formw">
                <?php echo $this->element->name->renderViewHelper() //render just the input of the element ?>
            </span>
            <?php echo $this->element->submit //render the whole submit element ?>
        </div>
    </form>
    

    在你的表单中设置装饰器:

    class Application_Form_NewForm extends Zend_Form
    {
        public function init() {
            $this->setMethod('POST');
            //set the viewscript decorator
            $this->setDecorators(array(
                array('ViewScript', array(
                        'viewScript' => '_partial.phtml'
                ))
            ));
        //more follows...
    

    现在像往常一样渲染表单

    您可能必须完全按照自己的意愿使用元素装饰器,但这应该会让您接近目标。

    希望这会有所帮助...

    【讨论】:

    • 感谢您的帮助。我现在可以工作了。我在视图脚本文件中使用了这些行来为元素提供类: element->name->addDecorator('Label', array('tag' => 'dt', 'class' => '标签'));?> 和 element->name->class= @text; ?> 这是正确的做法吗?
    • 如果可行的话,我对这些装饰器的理解有点薄弱。但是我个人会在表单本身而不是在 viewScript 中进行这些装饰器更改。
    猜你喜欢
    • 1970-01-01
    • 2013-07-11
    • 2011-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    相关资源
    最近更新 更多