我开始使用CakePHP 3.0,而且我遇到了一些代码位置问题。 我安装了这个插件来集成Twitter Bootstrap:https://github.com/elboletaire/twbs-cake-plugin 我已将Layout / default.ctp复制到我的主布局文件夹中,并且它工作得非常好,除了我不知道在哪里放置我的Navbar代码。
布局包含设置Bootstrap导航栏的部分:
<div class="navbar-header">
<?php if ($this->fetch('navbar.top')): ?>
<button data-target="#navbar-top" data-toggle="collapse" type="button" class="navbar-toggle">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<?php endif; ?>
<?=$ this->Html->link(Configure::read('App.name'), '/', ['class' => 'navbar-brand']); ?>
</div>
<?php if ($this->fetch('navbar.top')): ?>
<nav role="navigation" class="collapse navbar-collapse" id="navbar-top">
<ul class="nav navbar-nav">
<?=$ this->fetch('navbar.top'); ?>
</ul>
</nav>
<?php endif; ?>
我知道我需要设置navbar.top,但我无法弄清楚在哪里设置它。我尝试使用以下方法从AppView.php中的initialize()设置它:
$this->set('navbar.top', '<li>Hello</li>');
没有做任何事情,我不知道放置通用导航栏还有什么意义。
将它放入模板中没有问题,但是Bootstrap插件的默认布局中的代码似乎没有提示。
有人可以帮我弄清楚我应该在哪里设置Bootstrap导航栏代码,以便我可以使用我的默认布局吗? 非常感谢!
答案 0 :(得分:2)
嗯,最初的想法是使用view blocks添加它们,这很简单:
$this->append('navbar.top', $this->Html->tag('li', $this->Html->link('Home', '/')));
如果您已将导航栏菜单项添加到元素中,则可以执行以下操作:
$this->append('navbar.top', $this->element('navbar.top'));
下次你可以直接在github上问我:)
答案 1 :(得分:0)
将导航栏放在元素文件夹中。
在布局调用元素
中echo $this->element('navbar.top');
答案 2 :(得分:0)
在首次navbar.top
来电之前,将您的元素添加到$this->fetch('navbar.top')
。例如,我在/src/Template/Element/navbar-top.ctp
有一个元素,然后我使用以下代码来navbar.top
:
<?php $this->prepend('navbar.top', $this->element('navbar-top'));?>
<div class="navbar-header">
<?php if ($this->fetch('navbar.top')): ?>
<button data-target="#navbar-top" data-toggle="collapse" type="button" class="navbar-toggle">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<?php endif; ?>
<?=$ this->Html->link(Configure::read('App.name'), '/', ['class' => 'navbar-brand']); ?>
</div>
<?php if ($this->fetch('navbar.top')): ?>
<nav role="navigation" class="collapse navbar-collapse" id="navbar-top">
<ul class="nav navbar-nav">
<?=$ this->fetch('navbar.top'); ?>
</ul>
</nav>
<?php endif; ?>