在 CakePHP 3.0 中,我在哪里设置导航栏 Bootstrap?
Where do I set the navbar in CakePHP 3.0 with Bootstrap?
我刚开始使用 CakePHP 3.0,但遇到了一些代码位置问题。
我安装了这个插件来集成 Twitter Bootstrap:https://github.com/elboletaire/twbs-cake-plugin
我已将 Layout/default.ctp 复制到我的主布局文件夹中,它运行良好,但我不确定将导航栏代码放在哪里。
布局包含设置 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 导航栏代码,以便我的默认布局可以访问它?
非常感谢!
将导航栏放在元素文件夹中。
布局中调用元素
echo $this->element('navbar.top');
嗯,最初的想法是使用 view blocks 添加它们,这很简单:
$this->append('navbar.top', $this->Html->tag('li', $this->Html->link('Home', '/')));
如果您已将导航栏菜单项添加到元素中,您只需执行以下操作:
$this->append('navbar.top', $this->element('navbar.top'));
下次可以直接在github上问我:)
在您的第一个 $this->fetch('navbar.top')
调用之前将您的元素添加到 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; ?>
我刚开始使用 CakePHP 3.0,但遇到了一些代码位置问题。 我安装了这个插件来集成 Twitter Bootstrap:https://github.com/elboletaire/twbs-cake-plugin 我已将 Layout/default.ctp 复制到我的主布局文件夹中,它运行良好,但我不确定将导航栏代码放在哪里。
布局包含设置 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 导航栏代码,以便我的默认布局可以访问它? 非常感谢!
将导航栏放在元素文件夹中。
布局中调用元素
echo $this->element('navbar.top');
嗯,最初的想法是使用 view blocks 添加它们,这很简单:
$this->append('navbar.top', $this->Html->tag('li', $this->Html->link('Home', '/')));
如果您已将导航栏菜单项添加到元素中,您只需执行以下操作:
$this->append('navbar.top', $this->element('navbar.top'));
下次可以直接在github上问我:)
在您的第一个 $this->fetch('navbar.top')
调用之前将您的元素添加到 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; ?>