【问题标题】:CAKEPHP- Database based navigation on every pageCAKEPHP- 每个页面上基于数据库的导航
【发布时间】:2020-03-17 18:21:48
【问题描述】:

我是 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 Cake\Cache\Cache;
use Cake\Core\Plugin;
use Cake\Datasource\ConnectionManager;
use Cake\Error\Debugger;
use Cake\Http\Exception\NotFoundException;

$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">........

【问题讨论】:

    标签: php sql cakephp


    【解决方案1】:

    有没有办法导入“view into view”?

    这个概念在 CakePHP 中称为element

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

    将 nav 输出的逻辑移动到帮助器中可能也很有用。

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

    要将数据传递到呈现的每个页面,请将其从数据库中拉出,并将其设置到 beforeRender() 回调或您的 AppController 中的视图。

    https://book.cakephp.org/3/en/controllers.html#request-life-cycle-callbacks

    【讨论】:

    • 另外,如果要在每个页面上,最好在布局中添加一次,而不是每个视图。
    • @Salines 我不喜欢细胞,它们就像一个骗子,你一开始就会把逻辑分散在不应该的地方。如果处理得当,单元通常只查询存储库或调用域对象,这也可以从控制器中轻松完成。
    • 感谢大家,现在我将把导航栏放到元素上并使用 TableRegistry 获取数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    • 2013-01-15
    相关资源
    最近更新 更多