[英]Is it possible to show same page with different url?
我想為不同的URL顯示相同的內容。 例如:
website.com/controllername/country/state1/dist1/
website.com/controllername/country/state2/dist2/
我希望這兩個URL顯示相同的內容,即使某些內容會因URL而異(例如州名和地區名)。 我不想為每個URL創建單獨的內容/頁面。 我想知道是否可以在Codeigniter中這樣做嗎? 並且可以在Codeigniter中顯示類似上面的URL?
是的,使用Codeigniter路由是可能的,
在您的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';
與其他框架不同,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);
}
}
是的,您可以在路由上使用不同的URL設置來設置同一頁面。 請參閱下面的鏈接以獲取更多信息: https : //www.codeigniter.com/userguide3/general/routing.html
$ route ['controllername / country / state1 / dist1 /'] ='catalog / product_lookup'; $ route ['controllername / country / state1 / dist2 /'] ='catalog / product_lookup';
改善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';
應該是
'your_controller_name/your_function_name/$1/$2/$3';
好吧,總有很多方法可以做到這一點,選擇您自己的方法……祝您好運!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.