我在zf2中有简单的应用程序,我在每个应用程序页面都有布局菜单。例如,provinces / index.phtml,district / index.phtml,cities / index.phtml等。
菜单是:
<li class="start active ">
<a href="admin">
<i class="fa fa-home"></i>
<span class="title">
Dashboard
</span>
<span class="selected">
</span>
</a>
</li>
<li>
<a href="provinces">
<i class="fa fa-globe"></i>
<span class="title">
Provinces
</span>
</a>
</li>
<li>
<a href="districts">
<i class="fa fa-map-marker"></i>
<span class="title">
Districts
</span>
</a>
</li>
<li>
<a href="cities">
<i class="fa fa-tint"></i>
<span class="title">
Cities
</span>
</a>
</li>
我有代码:
<div class="page-content-wrapper">
<?php echo $this->content; ?> <!--this print contents of index.phtml -->
</div>
以相同的布局访问每个页面。
现在我想动态制作菜单,即选择省份然后突出显示省份,如果选择了区域,则应突出显示菜单中的区域。
我尝试了如下逻辑: 在provinces / index.phtml我写代码$ selected_page =“provinces”,在zone / index.phtml我写代码$ selected_page =“区”等
然后在布局菜单中:
我写class =“start active”&gt;
同样适用于地区和省份等。
但是这里变量 $ selected_page 无法访问,因为
<?php echo $this->content; ?>
只能打印和显示index.phtml的内容,而变量不会传递给布局。 那我该怎么做呢?我应该如何将变量 $ current_page 传递给布局,或者向我展示其他逻辑。
提前致谢:
答案 0 :(得分:1)
如果要将变量从控制器/操作(例如provincesAction()
)传递给视图。使用layout()
控制器插件:
public function provincesAction()
{
$this->layout()->setVariable('foo', 'bar');
return new ViewModel([]);
}
在layout.phtml中
// html code
<?php echo $this->foo; ?> // It will display "bar"
// more html code
但是以你的榜样为例。我建议你使用navigation()
查看助手。详细了解https://framework.zend.com/manual/2.4/en/modules/zend.navigation.view.helper.menu.html。这个插件只是为了你需要的东西。