Zend布局占位符



我试图在我的布局中创建一个具有占位符行为的边栏。我希望能够在每个控制器一次定义这个占位符的内容。因此,每个控制器都可以向侧边栏添加自定义内容,而无需在任何视图中定义它。

我有点困惑如何去与Zend_Layout。任何帮助吗?

我也试过类似的东西。你可以这样做。

将这种类型的代码放在布局中。php脚本文件。接近顶端的某个地方。你不需要这样做,但这样你就"知道"你正在使用什么占位符。在布局中这样做也是一个好主意,因为你可以在这里包装htmldiv等等,而不用担心在视图中。视图可以只关心内容。在此之后,您可以向控制器和视图中的占位符添加内容。

$this->placeholder('blah');
$this->placeholder('sidebar');
$this->placeholder('blunk');

如果你不想在布局中创建它们,那么你可以在控制器中这样做,

$this->view->placeholder( 'sidebar');

现在,您可以将内容放入控制器或视图脚本中。在视图中添加内容是一个更好的主意。

在布局中,你可以像这样回显占位符

echo $this->placeholder->( 'sidebar' );

所有视图都在布局执行之前执行,因此视图创建的任何占位符都可以用于布局打印。

另外,控制器没有占位符。只有视图和扩展布局有这样的占位符,所以你必须在某个地方声明它们。即使你在控制器中声明了它们,它们仍然"属于"视图对象。

我不知道这是否有帮助,但祝你好运。

如何添加一个postDispatch()调用到每个控制器?

public function postDispatch()
{
    // code to populate/activate your placeholder
    $this->view->placeholder('xxx');
}

此函数将在您的操作完成后调用。要了解更多信息,请参见预调度和后调度钩子。

我刚刚实现了一个解决方案,应该适用于大多数用途。

我存储所有占位符。以下目录下的php文件:/视图/脚本/_placeholder

在占位符中,我为每个具有占位符的控制器/动作创建目录(以及ROOT内容)。然后为每个占位符创建一个文件。

。占位符=侧栏。控制器= user/action = view

对于上面的代码,我们将在这里存储一个文件:

视图/脚本/_placeholder/用户/视图/sidebar.phtml

注意:在侧边栏内。$this->占位符("sidebar")->captureStart()和captureEnd();

如果插件看到这个文件,它将渲染它。如果它找不到,那么它就找不到。

此外,插件还会先查找以下内容并将其拉入:

视图/脚本/_placeholder/sidebar.phtml

我可以张贴插件,如果你想。

我唯一的问题是我现在想知道占位符是否有任何数据在里面。这样我可以创建一些布局,是聪明的,将渲染什么需要。有人知道怎么做吗?

最新更新