Zend повторно используемые виджеты / плагины / мини-приложения? - PullRequest
3 голосов
/ 02 марта 2011

Я новичок в Zend Framework и пытаюсь получить представление о возможности повторного использования кода. Я определенно знаю о модулях, но, похоже, есть некоторая неопределенность в отношении того, какие функциональные возможности должны входить в модули, а какие нет.

Что я пытаюсь сделать:

1) иметь многоразовые мини-программы / виджеты / плагины (как бы вы их ни называли), которые можно просто подключить к любому сайту, делая это в макете или представлении:

<?php echo $this->contactform;?>

или это в представлении:

<?php echo $this->layout()->blog;?>

Я бы назвал их расширением. так что в основном то, что вы видите в шаблонах Joomla / WordPress / Concrete5.

2) Весь код, связанный с этим конкретным расширением, должен находиться в отдельном каталоге.

3) Мы должны иметь возможность выводить расширения только для определенных модулей / контроллеров, где они требуются. они не должны отображаться без необходимости, если они не будут отображаться.

4) каждое расширение может выводить несколько областей содержимого на странице.

У вас есть хорошо продуманная структура / подход, который вы используете?

1 Ответ

6 голосов
/ 03 марта 2011

Похоже, вам нужно учиться на просмотреть помощников .Просмотр помощников может быть простым, например, возвращать номер версии приложения, или сложным, как добавление html нескольким заполнителям.Например:

layout.phtml:

<h1><?php echo $this->placeholder('title'); ?>
<div class="sidebar">
    <?php echo $this->placeholder('sidebar'); ?>
</div>
<div class="content">
    <?php echo $this->layout()->content; ?>
</div>

в вашем скрипте вида foo.phtml, например:

<?php
    $this->placeholder('title')->set('Hello World!');
    $this->placeholder('sidebar')->set('Hello World!');
?>
<h1>Bar Bar!</h1>

Теперь, если вы хотите иметь возможность использовать повторночто снова и снова вы можете сделать это:

<?php
class Zend_View_Helper_MyHelper extends Zend_View_Helper_Abstract
{
    public function myHelper()
    {
        $this->view->placeholder('title')->set('Hello World!');
        $this->view->placeholder('sidebar')->set('Hello World!');
        return '<h1>Bar Bar!</h1>';
    }
}

Теперь замените код в вашем foo.pthml на:

<?php
echo $this->myHelper();

Оба примера вывода foo.phtml:

Привет, мир!

Привет, мир!

Bar Bar!

Конечно, это очень упрощенный пример, но я надеюсь, что это поможет вам в правильном направлении.Счастливого взлома!

...