Php 如何将cutom URL路由到CodeIgniter中的自定义控制器?
我有一个名为Php 如何将cutom URL路由到CodeIgniter中的自定义控制器?,php,codeigniter,uri,url-routing,Php,Codeigniter,Uri,Url Routing,我有一个名为User的PHP CodeIgniter控制器,还有一个方法可以获取用户的详细信息User\u detail($username) 现在,当我需要显示用户数据时,例如用户名mike 我称之为URL 我的目标 如何通过下一个URL访问用户数据 或/和 这可以通过重写CI\u Controller类来实现,但不要更改原始核心文件,就像我说的那样,重写控制器并将逻辑放入其中 帮助: 也许更简单的解决方案是在.htaccess中使用apache mod_rewrite对其进行路由 下面
User
的PHP CodeIgniter控制器,还有一个方法可以获取用户的详细信息User\u detail($username)
现在,当我需要显示用户数据时,例如用户名
mike
我称之为URL
我的目标
如何通过下一个URL访问用户数据
或/和
这可以通过重写
CI\u Controller
类来实现,但不要更改原始核心文件,就像我说的那样,重写控制器并将逻辑放入其中
帮助:
也许更简单的解决方案是在.htaccess中使用apache mod_rewrite对其进行路由
下面是如何实现它的详细说明:您必须阅读codeigniter官方文档中的说明。它涵盖了所有与路由URL相关的内容。必须通过以下文件配置所有路由:
application/config/routes.php
可能是这样的:
$route['user/(:any)'] = "user/user_detail/$1";
的答案(使用路由配置)更简单、更清晰,但指出\u remap()
函数的用法在某些情况下可能会有所帮助:
在CI\u控制器
中,每次调用控制器时都会执行\u remap()
函数,以决定使用哪种方法。在那里,您可以检查该方法是否存在,或者使用一些已定义的方法。就你而言:
应用程序/控制器/User.php
class User extends CI_Controller {
public function _remap($method, $params = array())
{
if (method_exists(__CLASS__, $method)) {
$this->$method($params);
} else {
array_unshift($params, $method);
$this->user_detail($params);
}
}
public function user_detail($params) {
$username = $params[0];
echo 'username: ' . $username;
}
public function another_func() {
echo "another function body!";
}
}
这将导致:
=>'用户名:john'
........... => '用户名:mike's
... => '另一个职能机构!”
但它不适用于:,因为根本不调用控制器(即使它是默认控制器),在这种情况下,CI默认行为是查找名为mike
的控制器,如果找不到它,将抛出404错误
更多信息:
$route['user/(:any)]=“user/user\u detail/$1”$路由['(:any)]=“用户/用户详细信息/$1”;