Zend框架在布局中呈现自定义占位符

时间:2011-10-13 11:50:16

标签: zend-framework layout render placeholder

我在布局文件中有一些自定义占位符,例如[Region_Contents] 现在我想用我的自定义html替换这些占位符作为布局呈现 喜欢而不是显示[Region_Contents]它可能会显示

你好这是测试块

有没有办法做到这一点?

2 个答案:

答案 0 :(得分:1)

您可以使用视图过滤器。首先,我们必须像这样实现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将使用上述函数返回的内容。请注意,出于性能原因,我们在preg_replace上使用str_replace。

接下来,我们需要告诉ZF使用我们刚刚制作的过滤器。你可以在bootstrap中做到这一点。

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 Manual

Zend Framework and Translation

答案 1 :(得分:0)

如果没有必要保持上面描述的相同语法,您可以使用标准Zend_View占位符视图助手:http://framework.zend.com/manual/en/zend.view.helpers.html#zend.view.helpers.initial.placeholder

希望有所帮助,