如果想在ci的routes.php使用db的資料來控制 那這是一個方法 當然我覺得應該有更好的處理方式 像是 ci的hooks 不過經過簡單的研究後 還是覺得這方式最直觀(難度較低)
Database Table
Add the table `app_routes` to your MySQL database:
CREATE TABLE IF NOT EXISTS `app_routes` ( `id` bigint(20) NOT NULL auto_increment, `slug` varchar(192) collate utf8_unicode_ci NOT NULL, `controller` varchar(64) collate utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`), KEY `slug` (`slug`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1;
PHP Code
Replace the code in application/config/routes.php with the one below:
$route[ 'default_controller' ] = 'main';
$route[ '404_override' ] = 'error404';
require_once( BASEPATH .'database/DB.php');
$db =& DB();
$query = $db->get( 'app_routes' );
$result = $query->result();
foreach( $result as $row )
{
$route[ $row->slug ] = $row->controller;
$route[ $row->slug.'/:any' ] = $row->controller;
$route[ $row->controller ] = 'error404';
$route[ $row->controller.'/:any' ] = 'error404';
}
CodeIgniter is simple yet elegant, open source PHP framework developed by EllisLab. They also built the well-known ExpressionEngine by using CodeIgniter as a base. So that…
內容出處: Database-driven Routing in CodeIgniter — Osvaldas Valutis