[英]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.