Php 如何优化菜单导航
我正在构建一个菜单选项,在最后一个选项中有问题,锚定方法不能作为一个链接弹出一个新窗口。此外,在选项1和2中,我重复了那些看起来不太好的代码 有没有更好的方法来优化这些代码?让它更干净 在我的控制器中:Php 如何优化菜单导航,php,codeigniter,Php,Codeigniter,我正在构建一个菜单选项,在最后一个选项中有问题,锚定方法不能作为一个链接弹出一个新窗口。此外,在选项1和2中,我重复了那些看起来不太好的代码 有没有更好的方法来优化这些代码?让它更干净 在我的控制器中: public function loadPage($name, $pageID) { $data['title'] = $this->tabPageData; $data['tabMenu'] = $this->model->getAllMenuItems();
public function loadPage($name, $pageID) {
$data['title'] = $this->tabPageData;
$data['tabMenu'] = $this->model->getAllMenuItems();
if ($name == 'portfolio-1') {
// load portfolio 1, get the page content (photos) and its name
$data['tabPageContent'] = $this->model->getPageContentByPageID($pageID);
$data['pageName'] = $this->model->getPageNameByID($pageID);
} elseif ($name == 'portfolio-2') {
$data['tabPageContent'] = $this->model->getPageContentByPageID($pageID);
$data['pageName'] = $this->model->getPageNameByID($pageID);
} elseif ($name == 'contact') {
// load Contact page
$data['tabContact'] = $this->model->getContactByPageID($pageID);
} else {
// load a Blog site
echo anchor('http://mysite.tumblr.com', 'target=_blank');
}
$this->load->view('content', $data);
}
我认为:
<div id="menu">
<ul>
<?php foreach ($tabMenu as $item) : ?>
<?php
$url = "<li><a href='" . base_url();
$url .= str_replace("+", "-", urlencode(strtolower($item->name))) . "/". ($item->cat_id) . "'>";
$url .= strtoupper($item->name) . "</a></li>";
echo $url;
?>
<?php endforeach; ?>
</ul>
</div> <!-- end of Menu -->
我建议您通过创建一个助手方法来清理视图,该方法为导航生成一个列表项
将以下代码放入application/helpers/
中名为navigation\u helper.php的文件中
if (!defined('BASEPATH')) exit('No direct script access allowed');
if (!function_exists('build_list_item'))
{
function build_list_item ($item) {
$url_item_name = str_replace('+', '-', urlencode(strtolower($item->name)));
$url = base_url() . $url_item_name . "/". $item->cat_id;
return '<li><a href="' . $url . '">' . strtoupper($item->name) . '</a></li>';
}
}
在您看来,您可以这样做:
<div id="menu">
<ul>
<?php foreach ($tabMenu as $item): ?>
<?php echo build_list_item($item); ?>
<?php endforeach; ?>
</ul>
</div>
它工作得很好!谢谢现在,有没有更好的方法来优化我的控制器?
<div id="menu">
<ul>
<?php foreach ($tabMenu as $item): ?>
<?php echo build_list_item($item); ?>
<?php endforeach; ?>
</ul>
</div>