CAKEPHP-基于数据库的每页导航



我是CakePHP的新手,如果这是一个愚蠢的问题,请向我道歉。

我正在尝试显示基于数据库的动态导航栏。我已经创建了一个基于数据库的工作模型/控制器/视图设置。但现在我想在每一页上显示导航栏。

有没有办法将"视图导入视图"?

我的代码:〔查看〕

<div class="collapse navbar-collapse" id="collapsibleNavbar">
<ul class="navbar-nav ml-auto">  
<?php 
$dropend = false;
foreach ($Navbar as $navlink) 
{
if($navlink->parent_id == 0)
{
if($navlink->rght - $navlink->lft == 1){
echo'
<li class="nav-item"><a class="nav-link" href="#">'.$navlink->name.'</a></li>';
} else {
echo'
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbardrop" data-toggle="dropdown">'.$navlink->name.'</a>
<div class="dropdown-menu">';
$dropend = $navlink->rght;
}
} else {
if($navlink->rght + 1 == $dropend){
echo'
<a class="dropdown-item" href="#">'.$navlink->name.'</a>
</div>
</li>';
} else {
echo'
<a class="dropdown-item" href="#">'.$navlink->name.'</a>';
}
}
}
?>
</ul>
</div>

[页面/主页]

use CakeCacheCache;
use CakeCorePlugin;
use CakeDatasourceConnectionManager;
use CakeErrorDebugger;
use CakeHttpExceptionNotFoundException;
$this->layout = "page";
?>
-------------------------navbar location------------------
<div class="banner banner-main" style="background-image:url('<?php echo $this->Url->image('banner/1.jpg'); ?>')">
<div class="container">........

是否有将"视图导入视图"的方法?

这个概念在CakePHP中被称为element

https://book.cakephp.org/3/en/views.html#elements

将导航输出的逻辑移动到助手中可能也很有用。

https://book.cakephp.org/3/en/views/helpers.html#creating-助手

要将数据传递给渲染的每个页面,请从DB中提取数据,并将其设置为beforeRender()回调或AppController中的视图。

https://book.cakephp.org/3/en/controllers.html#request-生命周期回调

最新更新