Добавление большего количества функций к вспомогательным классам в Zend - PullRequest
1 голос
/ 23 ноября 2011

Вот мой вспомогательный класс

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
    }

в вышеупомянутый класс, но я получаю eror, что-то вроде плагина с именем 'AddBox' не найдено в реестре;нужно знать Могу ли я добавить дополнительные функции в класс помощника, если да, то как это возможно.

1 Ответ

2 голосов
/ 23 ноября 2011

Во-первых, вы должны вернуть весь вывод, а не выводить его напрямую.

Из документов 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'

Вы можете посмотреть помощник по навигации или помощник-заполнитель , чтобы увидеть этот шаблон.

...