codeigniter获取所有声明的路由

wnavrhmk  于 2023-09-28  发布在  其他
关注(0)|答案(3)|浏览(104)

如何在codeigniter中获取所有声明的路由?例如:print_r($route)
因为这是问题,如果客户注册他的用户名为“facebook”,他将被路由到帐户/facebook_login,而不是他的个人资料,如果我改变了路线的顺序,所有的链接将被路由到客户/个人资料,这是一个不不!
因此,基本上,不是列出我声明的所有路由并将其放入另一个数组或数据库表中,而是循环到路由数组中并检查是否有一个已经声明的单词,以便我可以阻止他们将该单词注册为他们的用户名。
这是我的示例路线:

// 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';
9ceoxa92

9ceoxa921#

在Controller中,您可以执行此操作

print_r($this->router->routes);

它将显示routes.php中定义的所有路由。

6xfqseft

6xfqseft2#

首先,我为我的英语感到抱歉,因为“我不是学校”。我没有得到很多你想指出的东西。也许你想对这个http://www.hirepinoy.com/born2code做类似的事情。但根据我使用CodeIgniter的经验,在路由中声明$route['(:any)'] = 'customer/profile/$1';是一个坏主意。
我认为你能做的最好的选择是创建一个类来检查用户名是否存在于用户表中,使用HOOK参见http://codeigniter.com/user_guide/general/hooks.html。因此,当返回username(唯一字段)时,您可以将$_SERVER['REQUEST_URI']修改为如下所示

$_SERVER['REQUEST_URI'] = '/customer/profile/'.$username;

所以基本上它会在codeigniter核心进程之前修改SERVER REQUEST。
现在,问题可能是,当用户注册了与您的控制器相同的用户名时,肯定不会被处理,因为它被修改为在costumer/profile/blahblah上路由。您需要做的就是创建一个自定义验证来检查用户名是否已经存在于数据库和/或您的控制器名称中。
你可以像

if (file_exists(APPPATH."controllers/{$value}.php")) {
    $this->CI->form_validation->set_message('is_unique', 'Username is already taken');  
    return FALSE;
}
6g8kf2rb

6g8kf2rb3#

在项目的根目录下的控制台中,您可以使用以下命令获取所有路由:

php spark routes

这将向您展示类似于:

+-----------+-------------------------+---------------+-----------------------------------+----------------+---------------+
| Method    | Route                   | Name          | Handler                           | Before Filters | After Filters |
+-----------+-------------------------+---------------+-----------------------------------+----------------+---------------+
| GET(auto) | product/list/../..[/..] |               | \App\Controllers\Product::getList |                | toolbar       |
+-----------+-------------------------+---------------+-----------------------------------+----------------+---------------+

参阅文档

相关问题