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

Zend framework Zend framework在布局中呈现自定义占位符,zend-framework,layout,render,placeholder,Zend Framework,Layout,Render,Placeholder,我在布局文件中有一些自定义占位符,如[Region_Contents] 现在,我想在呈现布局时用自定义html替换这些占位符 与显示[Region_Contents]类似,它可能会显示Hello这是测试块 有什么方法可以做到这一点吗?如果没有必要保留上述相同的语法,您可以使用标准的Zend_视图占位符视图帮助程序: 希望对您有所帮助,您可以为此使用视图过滤器。首先,我们必须实现Zend_Filter_接口,如下所示: class My_View_Filter_PlaceholderReplace

我在布局文件中有一些自定义占位符,如[Region_Contents] 现在,我想在呈现布局时用自定义html替换这些占位符 与显示[Region_Contents]类似,它可能会显示Hello这是测试块
有什么方法可以做到这一点吗?

如果没有必要保留上述相同的语法,您可以使用标准的
Zend_视图
占位符视图帮助程序:


希望对您有所帮助,

您可以为此使用视图过滤器。首先,我们必须实现Zend_Filter_接口,如下所示:

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');
    ...
  }
  ...
}
有关更多信息,请参阅以下链接:


我只想过滤布局,不想过滤视图。在上面的例子中,它同时过滤视图和布局,但我只需要过滤布局