1

好的,这个主题没有意义,所以我会在这里尝试更好地描述它。

Zend Frame 工作在这里使用。而且我遇到了将变量传递给我的视图的问题,以及包含在构成模板的“top.phtml”中的视图。我想要做的是实现一个面包屑概念。面包屑文件包含在内容视图文件之前的 top.phtml 中。因此,就面包屑文件而言,没有定义面包屑变量。

我可以在控制器视图中打印我的面包屑设置数组,没问题,所以它正在工作我知道很多,只是在该视图之上的任何东西,特别是在事物的顺序中都无法获得变量。所以我想我想要回答的是有没有一种方法可以将变量传递给概念上类似的整体方案

$this->view->variable_name = blah;

像top.phtml这样高的东西在哪里可以拿来使用?

4

4 回答 4

3

您可能正在寻找占位符

例子:

从控制器设置占位符值:

$this->view->placeholder('some_placeholder_name')->set('blah');

从视图设置占位符值

$this->placeholder('some_placeholder_name')->set('blah');

在视图脚本或布局中检索占位符值:

$value = $this->placeholder('some_placeholder_name');

占位符内容在应用程序执行结束时呈现,因此在您的控制器中设置的值应该在您的顶级top.phtml视图脚本中可用。

于 2012-08-09T23:03:17.433 回答
1

我认为这会起作用:

$this->layout()->breadcrumbs = ...

然后$this->layout()->breadcrumbs在你的 top.phtml 中打印。

于 2012-08-09T22:56:45.073 回答
1

在花了几个小时试图开始placeholder()工作之后partialLoop(),我终于放弃并破解了一个将 vars 传递给部分的修复程序:

$vars = (array) $this->getVars();
foreach ($this->rows as $row) {
    $partialVars = array(
        'row' => $row,
        'vars' => $vars,
    );
    echo $this->partial('row.phtml', $partialVars);
}

丑陋,但它的工作。

于 2012-08-09T23:08:46.493 回答
0

为每个人+1给我一个线索,但是以上都没有对我有利。然而,在他们所有人之间,他们引导我找到我的答案,即

Zend_Registry

在我的控制器中,我构建了我的数组并将其传递给 Zend_Registry

    $breadArray = array(
        array("icon"=>"i_robot", "href"=>"systems/"),
        array("href"=>"metrics","text"=>"Metrics")
    );
    Zend_Registry::set('breaded_crumbs', $breadArray);

然后在我使用的内容和视图之前加载的我的 breadcrumb.phtml

print_r(Zend_Registry::get('breaded_crumbs'));

看看它是否正常工作,它给了我数组,所以我对于将来希望在视图本身之外扩展变量的人来说,注册表似乎是要走的路。我尝试了占位符和布局,两者都给了我关于不是某物的错误,当我让它们部分工作时,我没有得到我所期望的。

于 2012-08-09T23:44:55.943 回答