Добавяне на още функции към помощни класове в zend

Ето моя помощен клас

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="/bgjobseeker.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
    }

към горния клас, но получавам грешка нещо като Plugin с име „AddBox“ не е намерено в системния регистър;

Тук трябва да знам Мога ли да добавя още функции към помощния клас, ако да, как е възможно това.


person josdev    schedule 23.11.2011    source източник


Отговори (1)


Първо, трябва да върнете целия изход, а не да го повторите директно.

От документи на Zend_View_Helper:

По принцип класът не трябва да отразява или да отпечатва или по друг начин да генерира изход. Вместо това трябва да върне стойности, които да бъдат отпечатани или повторени. Върнатите стойности трябва да бъдат екранирани по подходящ начин.

Когато извикате $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'

Можете да погледнете помощника за навигация или заместител помощник, за да видите този модел.

person Tim Lytle    schedule 23.11.2011