Zend framework Zend布局占位符?

Zend framework Zend布局占位符?,zend-framework,Zend Framework,我试图在布局中创建一个具有占位符行为的侧栏。我希望能够为每个控制器定义一次此占位符的内容。因此,每个控制器都可以向侧边栏添加自定义内容,但无需在任何视图中定义 我对如何使用Zend_布局感到困惑。有什么帮助吗?我也试过类似的方法。这是你能做的 将此类代码放在layout.phtml脚本文件中。在接近顶端的某个地方。你不必这么做,但这样你就“知道”你在用什么占位符了。在布局中这样做也是一个好主意,因为您可以在这里包装html div,而不必在视图中担心它。视图可能只关心内容。之后,可以从控制器和视

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


我对如何使用Zend_布局感到困惑。有什么帮助吗?

我也试过类似的方法。这是你能做的

将此类代码放在layout.phtml脚本文件中。在接近顶端的某个地方。你不必这么做,但这样你就“知道”你在用什么占位符了。在布局中这样做也是一个好主意,因为您可以在这里包装html div,而不必在视图中担心它。视图可能只关心内容。之后,可以从控制器和视图向占位符添加内容

$this->placeholder('blah'); $this->placeholder('sidebar'); $this->placeholder('blunk'); $this->view->placeholder( 'sidebar'); $this->占位符('blah'); $this->占位符('sidebar'); $this->占位符('blunk');

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

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

现在,您可以将内容放入控制器或视图脚本中。不过,最好在视图中添加内容

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


echo$this->占位符->(“边栏”);

所有视图都是在执行布局之前执行的,因此由视图创建的任何占位符都将可供布局打印

此外,控制器没有占位符。只有视图和扩展布局有这样的占位符,所以您必须在某处声明它们。即使在控制器中声明它们,它们仍然“属于”视图对象


我不知道这是否有帮助,但祝你好运。告诉我你的想法。

我也试过类似的方法。这是你能做的

将此类代码放在layout.phtml脚本文件中。在接近顶端的某个地方。你不必这么做,但这样你就“知道”你在用什么占位符了。在布局中这样做也是一个好主意,因为您可以在这里包装html div,而不必在视图中担心它。视图可能只关心内容。之后,可以从控制器和视图向占位符添加内容

$this->placeholder('blah'); $this->placeholder('sidebar'); $this->placeholder('blunk'); $this->view->placeholder( 'sidebar'); $this->占位符('blah'); $this->占位符('sidebar'); $this->占位符('blunk');

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

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

现在,您可以将内容放入控制器或视图脚本中。不过,最好在视图中添加内容

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


echo$this->占位符->(“边栏”);

所有视图都是在执行布局之前执行的,因此由视图创建的任何占位符都将可供布局打印

此外,控制器没有占位符。只有视图和扩展布局有这样的占位符,所以您必须在某处声明它们。即使在控制器中声明它们,它们仍然“属于”视图对象


我不知道这是否有帮助,但祝你好运。告诉我你的想法。

给每个控制器添加一个
postDispatch()
调用怎么样

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

此函数将在操作完成后调用。有关更多信息,请参阅。

如何向每个控制器添加
postDispatch()
调用

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

此函数将在操作完成后调用。有关更多信息,请参阅。

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

我将所有placeholder.phtml文件存储在以下目录中: /视图/脚本/_占位符

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

e、 g.占位符=侧栏。控制器=用户/操作=视图

对于上述内容,我们将在此处存储一个文件:

视图/脚本/_占位符/user/view/sidebar.phtml

注意:在sidebar.phtml中,您需要添加:$this->placeholder(“sidebar”)->captureStart()和captureEnd()

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

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

视图/脚本/_占位符/sidebar.phtml

如果你愿意,我可以发布插件


唯一的问题是我现在想知道占位符中是否有任何数据。这样,我可以创建一些聪明的布局,并将渲染所需的内容。有人知道如何做到这一点吗?

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

我将所有placeholder.phtml文件存储在以下目录中: /视图/脚本/_占位符

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

e、 g.占位符=侧栏。控制器=用户/操作=视图

对于上述内容,我们将在此处存储一个文件:

视图/脚本/_占位符/user/view/sidebar.phtml

注意:在sidebar.phtml中,您需要添加:$this->placeholder(“sidebar”)->captureStart()和captureEnd()

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

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

视图/脚本/_占位符/sidebar.phtml

如果你愿意,我可以发布插件

唯一的问题是我现在想知道占位符中是否有任何数据。这样,我可以创建一些聪明的布局,并将渲染所需的内容。有吗