如何让笨所有宣布的路线? 像前。 的print_r($路径)
因为这是问题,如果客户登记了他的用户名是“Facebook的”,他将被路由到账户/ facebook_login,而不是他的个人资料,如果我改变路线的顺序,所有的链接将被路由到客户/ profile文件,这是一种没有没有!
所以基本上,而不是列出所有我声明,并把它变成一个又一个数组或数据库表中的路由,我想循环进入航线阵列并检查是否存在已被宣布已经使我可以阻止他们注册一个字这个词作为他们的用户名。
这是我的样品路线:
// Account routes
$route['login'] = 'account/login';
$route['logout'] = 'account/logout';
$route['register'] = 'account/register';
$route['facebook'] = 'account/facebook_login';
$route['twitter'] = 'account/twitter_login';
$route['settings'] = 'account/settings';
$route['validate/(:any)'] = 'validate/$1';
// Dynamic routes
$route['(:any)'] = 'customer/profile/$1';
从控制器,你可以这样做
print_r($this->router->routes);
它会显示在routes.php文件中定义的所有路由。
首先,我为我的英语抱歉,因为“我是不是学校”。 我没有得到多少你是想指出的是什么。 也许你想要做与此相似http://www.hirepinoy.com/born2code 。 但在我使用CodeIgniter的经验,这是一个坏主意,宣布$route['(:any)'] = 'customer/profile/$1';
在你的路线。
我认为你能做的最好的选择是,创建一个类来检查用户名在用户表中存在利用HOOK看到http://codeigniter.com/user_guide/general/hooks.html 。 所以,因此,当用户名(唯一的字段),然后回到你可以修改$_SERVER['REQUEST_URI']
是这样的
$_SERVER['REQUEST_URI'] = '/customer/profile/'.$username;
所以基本上它会修改笨核心流程是核心处理之前的服务器请求。
现在,这个问题也许是当用户注册一个用户名与您的控制器,肯定不会是过程一样,因为它被修改,以路线上costumer/profile/blahblah
。 所有你需要做的是创建一个自定义的验证检查天气的用户名已存在于数据库,或者您的控制器名称。
你可以这样做
if (file_exists(APPPATH."controllers/{$value}.php")) {
$this->CI->form_validation->set_message('is_unique', 'Username is already taken');
return FALSE;
}