我的网站中有导航栏,如:
这是我的代码:
<ul class="breadcrumb">
<li>
<i class="icon-home"></i>
<a href="index.html">Home</a>
<i class="icon-angle-right"></i>
</li>
<li>
<?php echo $this->Html->link($title_for_layout,array('controller'=>'controllers','action'=>'index','full_base'=>true));?>
</li>
</ul>
在此图片中,我正在与员工控制器合作。所以我的链接是&#34; Home&gt;人员&#34; 即可。如果我使用产品控制器链接,则&#34;主页&gt;产品及#34; 即可。
但如果我使用Staffs Controller并且Action是 Add 。手段&#34;员工/添加&#34;。我想在导航栏上显示它,如&#34; Home&gt;员工&gt;添加&#34; 即可。那我该怎么做呢?
如果我做了#1。当前链接将是&#34; Home&gt;员工&gt;添加&#34; 即可。当我想回到员工指数时。我点击了#34;员工&#34; in&#34; Home&gt;员工&gt;添加&#34 ;.我必须像
那样建立链接$这 - &GT; HTML-&GT;链路(还有$ title_for_layout,阵列(&#39;控制器&#39; =&GT;&#39;员工&#39;&#39;动作&#39; =&GT; &#39;指数&#39)
使用Staffs控制器时,此链接正常。当我更改为产品时,客户将被破坏。我该怎么做呢。
我正在使用CakePHP 1.3 对不起,我问这样简单的事情。我是Cake PHP的新手。感谢您的帮助和阅读。
答案 0 :(得分:1)
您需要以结构化的方式解决这个问题。您需要收集将要在面包屑中显示的所有链接的数组,然后通过并输出所有链接。尝试这样的事情:
$links = array();
// Add the home URL
$links[] = array(
'icon' => 'icon-home',
'title' => 'Home',
'url' => 'index.html'
);
// Add the controller
$links[] = array(
'title' => ucwords($this->params['controller']),
'url' => $this->Html->url(array('controller' => $this->params['controller'], 'action' => 'index', 'full_base' => true))
);
// Now, conditionally add the next parts where necessary
$param1 = isset($this->params['pass'][0]) ? $this->params['pass'][0] : null;
if($param1) {
$links[] = array(
'title' => ucwords($param1),
'url' => $this->Html->url(array('controller' => $this->params['controller'], 'action' => $this->action, $param1))
);
}
现在你有了一个结构化数组,其中包含你要输出的三个链接,所以你可以像这样输出它们:
<ul class="breadcrumb">
<?php
$size = count($links);
foreach($links as $i => $link) : ?>
<li>
<?php
// Output icon if it's set
if(isset($link['icon']))
echo '<i class="' . $link['icon'] . '"></i>'; ?>
// Output the link itself
echo $this->Html->link($link['title'], $link['url']);
// Output the caret if necessary (it's not the last)
if($i < $size - 1)
echo '<i class="icon-angle-right"></i>';
?>
</li>
<?php endforeach; ?>
</ul>
注意:强>