2011-12-07 36 views
0

我正在構建菜單選項,在最後一個選項中出現問題,Anchor方法不能用作鏈接彈出一個新窗口。此外,在選項1和2中,我重複那些看起來不太好的代碼。如何優化菜單導航

有沒有更好的方法來優化這些代碼?使其更清潔。

在我的控制器:

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 --> 
+0

http://codereview.stackexchange.com –

回答

2

我建議你通過創建爲您導航生成列表項的輔助方法,清理你的看法。

將以下代碼放入application/helpers/中名爲navigation_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>'; 
    } 
} 

確保您在控制器中加載助手或自動加載它,如果您經常使用它。

$this->load->helper('navigation_helper'); 

然後在您的視圖,你可以這樣做:

<div id="menu"> 
    <ul> 
     <?php foreach ($tabMenu as $item): ?> 
      <?php echo build_list_item($item); ?> 
     <?php endforeach; ?>  
    </ul> 
</div> 
+0

它的偉大工程!謝謝。現在,有沒有更好的我可以優化我的控制器? – qpixo