Zend Framework рендеринг пользовательских заполнителей в макете - PullRequest
2 голосов
/ 13 октября 2011

У меня есть несколько пользовательских заполнителей в файле макета, например [Region_Contents] Теперь я хочу заменить эти заполнители на мой собственный HTML-код при отображении макета например, вместо отображения [Region_Contents] может отображаться

Здравствуйте, это тестовый блок

Есть ли способ сделать это?

Ответы [ 2 ]

1 голос
/ 13 октября 2011

Вы можете использовать фильтры просмотра для этого.Сначала мы должны реализовать Zend_Filter_Interface следующим образом:

class My_View_Filter_PlaceholderReplacer implements Zend_Filter_Interface
{
    public function filter($value) 
    {
        return str_replace('[Region_Contents]', 'Hello this is test block', $value);
    }
}

В приведенном выше коде $ value содержит строковое представление представления непосредственно перед его отображением.Все, что возвращается вышеупомянутой функцией, будет использоваться ZF при рендеринге представления.Обратите внимание, что мы используем str_replace вместо preg_replace из соображений производительности.

Далее нам нужно указать ZF использовать только что созданный фильтр.Вы можете сделать это в начальной загрузке.

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
  protected function _initViewSettings()
  {
    $this->bootstrap('view');
    $view = $this->getResource('view');
    $view->addFilterPath('My/View/Filter', 'My_View_Filter');
    $view->setFilter('PlaceholderReplacer');
    ...
  }
  ...
}

Для получения дополнительной информации, пожалуйста, обратитесь к следующим ссылкам:

Руководство по Zend

Zend Framework and Translation

0 голосов
/ 13 октября 2011

Если нет необходимости придерживаться того же синтаксиса, который вы описали выше, вы можете просто использовать стандартные Zend_View помощники вида заполнителя: http://framework.zend.com/manual/en/zend.view.helpers.html#zend.view.helpers.initial.placeholder

Надеюсь, это поможет,

...