好吧,这个主题没有意义,所以我试图在这里更好地描述它。
Zend Frame在这里使用。而且我在将变量传递给我的视图时遇到了问题,即构成模板的"top.phtml"中包含的视图。我正在尝试做的是实现面包屑概念。面包屑文件包含在内容视图文件之前的 top.phtml 中。因此,就痕迹导航文件而言,没有定义痕迹导航变量。
我可以在控制器视图中print_r面包屑的设置数组,没问题,所以我知道它正在工作,只是该视图上方的任何内容,特别是按事物顺序无法获取变量。所以我想我想回答的是,是否有一种方法可以将变量传递给概念上类似于的整体方案
$this->view->variable_name = blah;
像top.phtml这样高的东西在哪里可以拿起它使用?
您可能正在寻找占位符。
例:
从控制器设置占位符值:
$this->view->placeholder('some_placeholder_name')->set('blah');
从视图中设置占位符值
$this->placeholder('some_placeholder_name')->set('blah');
检索视图脚本或布局中的占位符值:
$value = $this->placeholder('some_placeholder_name');
占位符内容在应用程序执行结束时呈现,因此控制器中设置的值应在顶级视图脚本中可用top.phtml
。
我认为这将起作用:
$this->layout()->breadcrumbs = ...
然后在top.phtml中打印$this->layout()->breadcrumbs
。
- Zend布局
在花费了几个小时试图让placeholder()
与partialLoop()
一起工作之后,我终于放弃并破解了一个修复程序,将 vars 传递给部分:
$vars = (array) $this->getVars();
foreach ($this->rows as $row) {
$partialVars = array(
'row' => $row,
'vars' => $vars,
);
echo $this->partial('row.phtml', $partialVars);
}
丑陋,但它奏效了。
+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'));
看看它是否有效,它给了我数组,所以我对于将来希望在视图本身之外扩展变量的任何人,注册表似乎是要走的路。我尝试了占位符和布局,两者都给了我关于不是某物或其他东西的错误,当我让它们部分工作时,我没有得到我所期望的。