2017-09-01 85 views
0

我想爲不同的網址顯示相同的內容。例如:是否可以使用不同的網址顯示相同的頁面?

website.com/controllername/country/state1/dist1/ 
website.com/controllername/country/state2/dist2/ 

我希望這兩個URL顯示相同的內容。儘管一些內容會根據URL(如狀態和區域的名稱)而有所不同。我不想爲每個網址創建單獨的內容/頁面。我想知道在Codeigniter中是否可以這樣做?並可以在Codeigniter中顯示上述URL嗎?

+0

我想你想要兩個不同的'路線'相同的'視圖'文件。 – C2486

+0

是的,它應該是,這是這種URL模式的全部點。這一切都取決於設置你的路由規則等。我相信你可以在文檔中研究這一點。 – ADyson

回答

0

與其他框架不同,CodeIgniter沒有全局模板系統。除非另有說明,否則每個控制器都會獨立於系統控制其自己的輸出,視圖爲FIFO。

舉例來說,如果我們有一個全球性的標題:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd" > 
<html> 
    <head> 
     <title><?=$title?></title> 
     <!-- Javascript --> 
     <?=$javascript ?> 
     <!-- Stylesheets --> 
     <?=$css ?> 
    </head> 
    <body> 
     <div id="header"> 
      <!-- Logos, menus, etc... --> 
     </div> 
     <div id="content"> 

和全球頁腳:

</div> 
     <div id="footer"> 
      <!-- Copyright, sitemap, links, etc... --> 
     </div> 
    </body> 
</html> 

那麼我們的控制器將不得不像

class Welcome extends Controller { 

    function index() { 
     $data['title'] = 'My title'; 
     // Javascript, CSS, etc... 

     $this->load->view('header', $data); 

     $data = array(); 
     // Content view data 
     $this->load->view('my_content_view', $data); 

     $data = array(); 
     // Copyright, sitemap, links, etc... 
     $this->load->view('footer', $data); 
    } 
} 
0

是的,你可以在路由上設置具有不同URL設置的相同頁面。 參見下面鏈接的詳細信息: https://www.codeigniter.com/userguide3/general/routing.html

$路線[ 'controllername /國家/ STATE1/DIST1 /'] = '目錄/ product_lookup'; $ route ['controllername/country/state1/dist2 /'] ='catalog/product_lookup';

1

是的,它是可能的笨路由,

在你application/config/routes.php粘貼下面的代碼,並改變你使用的控制器和函數的名稱,

$route['([a-zA-Z0-9---_%])+/([a-zA-Z0-9---_%])+/([a-zA-Z0-9---_%])'] = 'your_controller_name/your_function_name/$1/$1/$1';

+0

在這個路由中,所有具有2個參數訪問相同頁面的頁面。它不是好的解決方案。 –

0

改善krishnaraj答案...

您需要 website.com/controllername/method1/st/dist/ website.com/controllername/method2/st/dist/

//從來就改變了一些變量,爲了更好的理解,而「國家」將 //你的控制器,你只是

public function method1($st1,$st2){ 
    $this->load->view('header'); 

    $this->load->model('data_processing'); 
    $data['data'] = $this->data_processing->any_model_function($st1,$st2); 

    $this->load->view('page_you_want',$data); 
    //here you choose the same view for both methods 

    $this->load->view('footer'); 
} 

public function method2($st1,$st2){ 
    $this->load->view('header'); 

    $this->load->model('data_processing'); 
    $data['data'] = $this->data_processing->any_model_function($st1,$st2); 

    $this->load->view('page_you_want',$data); 
    //here you choose the same view 

    $this->load->view('footer'); 
} 

在的情況下,成爲主要的變化

所以由Kavin SMK解釋路由配置,發現只是一個錯誤,而不是

'your_controller_name/your_function_name/$1/$1/$1'; 

它是768,16

'your_controller_name/your_function_name/$1/$2/$3'; 

那麼,總是有很多方法可以做到這一點,選擇你的... 祝你好運!

相關問題