在我的应用程序中
我有3个路由规则(在routes.php
文件中定义),它们指向一个控制器
$route[urlencode('news')] = "news/show-news";
$route[urlencode('letters')] = "news/show-news";
$route[urlencode('papers')] = "news/show-news";
所以
如果任何用户导航到这些URL中的任何一个
http://example.com/news/
http://example.com/letters/
http://example.com/papers/
目标控制器为news/show-news
我的需要
如何识别使用定向到我的Codeigniter控制器的路由规则?
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class News extends CI_Controller {
public function show-news(){
// came from [news OR letters OR papers] ??
}
}
你可以用这样的方法来实现,但有各种方法可以实现你想要的。基本上,为了给你一个启动,请查看下面的代码:
在您的控制器中,您输入以下代码:
class News extends CI_Controller {
public function show_news( $method = '' )
{
switch ( $method )
{
// If news requested
case 'news':
// your code here
echo 'news requested';
break;
// If letters requested
case 'letters':
// your code here
echo 'letters requested';
break;
// If papers requested
case 'papers':
// your code here
echo 'papers requested';
break;
// Default landing if nothing provided
default:
// your code here
echo 'select one of the show method';
}
}
}
在您的routes.php
中,您键入以下内容:
$route['news'] = "news/show_news/news";
$route['letters'] = "news/show_news/letters";
$route['papers'] = "news/show_news/papers";
因此,您有第四个选项,如果没有提供任何内容,您可以重定向到某个页面,用户可以在其中选择default
部分中可用的新闻类型之一。
首先感谢@spirinemaga
他的答案是正确的
但是,如果我们想在不使用参数控制器功能的情况下执行
我们可以做到
public function show-news(){
// came from [news OR letters OR papers] ??
$requested_URI_segment = $this->uri->segment(1);
$requested_URI_segment = urldecode($requested_URI_segment);
switch ( $requested_URI_segment ){
// If news requested
case 'news':
// your code here
echo 'news requested'. '</br>';
break;
// If letters requested
case 'letters':
// your code here
echo 'letters requested'. '</br>';
break;
// If papers requested
case 'papers':
// your code here
echo 'papers requested'. '</br>';
break;
// Default landing if nothing provided
default:
// your code here
echo 'select one of the show method'. '</br>';
}
试试这个:
$route['news'] = "controller/method_name";
$route['letter'] = "controller/method_name";
$route['papers'] = "controller/method_name";
我有一个项目,我以前用CI做的,我有一部分是为学生&缺席的所以在我的路线上,我设置成这样:
$route['student/page'] = "student/index";
$route['student/page/(:num)'] = "student/index/$1";
$route['absent/page'] = "absent/index";
$route['absent/page/(:num)'] = "absent/index/$1";
还有一些关于htaccess的设置。