笨如何设置路由根据没有URI段的默认控制器(codeigniter how to set route

2019-08-05 13:56发布

我使用笨作为一个模块在我的项目,显示为类别和项目的信息。

我想要的网址类似如下

  1. sitename.com/module/将显示在随机顺序的所有项目。
  2. sitename.com/moduel/categoryname/将显示该类别的所有项目
  3. sitename.com/module/categoryname/title-of-the-item/这将显示该特定项目的细节

这里sitename.com/module/是笨的root,默认控制器是家庭。

我的问题是如何设置一个段或URI和URI一样两段路线

  1. sitename.com/module/应该加载默认的控制器(家在我的情况)
  2. sitename.com/module/categoryname/应该载入家/分类/类别名
  3. sitename.com/module/categoryname/title-of-the-item应该加载索引/标题/标题的最项

如下,我会定义我的功能

  1. 功能可按指数()...
  2. 功能类别($类别名)....
  3. 功能标题($标题)....

所以,无论是我想根据段的NUM创建路由或是否有任何其他的替代品与当时的路由是细做到这一点。

我想用的路由,而不是它通过将2段作为参数传递给指数函数来完成。

为何?

Answer 1:

设置现场sitename.com/module的基本URL。

你可以尝试数据库驱动的路由。
这是通过使用数据库表来写你的路由你。

实施例的数据库表;

CREATE TABLE IF NOT EXISTS `app_routes` (
  `id` bigint(20) NOT NULL auto_increment,
  `category` varchar(192) collate utf8_unicode_ci NOT NULL,
  `controller` varchar(64) collate utf8_unicode_ci NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `category` (`category`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1;

实施例路线;

$route[ 'default_controller' ]  = 'home';
$route[ '404_override' ]        = 'error404';

require_once( BASEPATH .'database/DB'. EXT );
$db =& DB();
$query = $db->get( 'app_routes' );
$result = $query->result();
foreach( $result as $row )
{
    $route[ $row->slug ]                 = 'home/category_lookup/'.$row->slug;
    $route[ $row->slug.'/:any' ]         = 'home/item_lookup/'$row->slug/$1;
    $route[ $row->controller ]           = 'error404';
    $route[ $row->controller.'/:any' ]   = 'error404';
}

这个链接会给你充分的细节(这不是我的工作-谷歌仅仅是我的朋友)。



Answer 2:

$route['page/(:any)'] = "home/page/$1";
$route['page'] = "home/index";
$route['(:any)/page/(:any)'] = "home/category/$1/page/$2";
$route['(:any)/page'] = "home/category/$1";
$route['page'] = "home/index";

$route['(:any)/(:any)'] = "home/title/$2";
$route['(:any)'] = "home/category/$1";

最后两行(7,8)是我需要什么...那我的服务宗旨

最后两个(1,2,3,4,5)之前的线是如何使用分页的最后两行(7和8)

唯一的家/类别和家庭/有页码和不在家/标题这是最终页。

同时,如果有人发现代码可能是越野车或需要完善,那么请加入一个答案,这样我就可以更新。



文章来源: codeigniter how to set routes to default controller according to the no of uri segments