在zend中为helper类添加更多函数

时间:2011-11-23 10:35:44

标签: layout view helper zend-framework

这是我的助手类

class Zend_View_Helper_CommonArea extends Zend_View_Helper_Abstract {

    public function commonArea()
    {
        ?>

        <div class="clear"></div>
        <div id="quick_search">
            <div class="search">
                        <strong>QUICK SEARCH </strong>

                    <input type="text" name="keyword" id="keyword" value="Enter keywords" class="form" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;" />
                <select name="select" id="select" class="selectstyled">
                    <option>Prefered Location</option>
                    <option>Prefered Location</option>
                    <option>Prefered Location</option>
                    <option>Prefered Location</option>
                    <option>Prefered Location</option>
                </select>
            </div>
            <div class="bt_box">
                <input name="find" type="submit" class="find" id="search"  value="Find Jobs" />
            </div>
            <div class="resume"><a href="jobseeker.html"><img src="images/resume.jpg" alt="" /></a></div>
        </div>


        <?php
    }
}

我的问题是,我需要为这个类添加一个新函数。我试过添加像

这样的新功能
public function addBox()
    {
        ?>
        <div id="add_right_box"style="height:500px;"><h3 class="add_h2">Width 210px</h3></div>
        <?php
    }

到上面的课程,但我得到了类似的东西 在注册表中找不到名为“AddBox”的插件;

这里我需要知道我可以向助手类添加更多功能,如果是,这怎么可能。

1 个答案:

答案 0 :(得分:2)

首先,您应该返回所有输出,而不是直接回显。

来自Zend_View_Helper docs

  

通常,类不应回显或打印或以其他方式生成输出。相反,它应该返回要打印或回显的值。应该适当地转义返回的值。

当您从视图中调用$this->commonArea()时,它将加载“CommonArea”类,然后调用匹配方法。因此,调用$this->addBox()将查找“AddBox”类 - 它不会知道您希望它成为“CommonArea”插件的一部分。

如果要从同一个插件调用多个方法,请让匹配方法返回插件的实例:

public function commonArea(){
  return $this;
}

然后调用这样的方法:

$this->commonArea()->addBox();
$this->commonArea()->display(); //assuming you renamed the original method to 'display'

您可以查看navigation helperplaceholder helper以查看此模式。