pep*_*epe 2 php routing uri codeigniter
我的应用程序旨在为每个用户提供单个配置文件页面,第3个段是用户的ID.
example.com/profile/page/1
Run Code Online (Sandbox Code Playgroud)
假设用户1是"Jon Jovi",使用CI的路由我想生成这个URI
example.com/jon_jovi
Run Code Online (Sandbox Code Playgroud)
是否可以发送此用户的ID config/routes.php,运行一个函数从数据库中提取用户1的信息并插入它
$route['profile/page/$row->id'] = $row->first_name . '_' . $row->last_name;
Run Code Online (Sandbox Code Playgroud)
任何有关如何做到这一点的想法或建议都非常感谢 - 谢谢.
不确定这config/routes.php根本就在你的身上:你为什么不创建一个取名字并进行查找的控制器?
编辑:我把它拿回来.这实际上有点痛苦,特别是因为你希望它生活在域的根目录上(即它很容易做到example.com/p/{username},但是example.com/{username}是凌乱的).
最简单的方法是使用CodeIgniter 2.0 +覆盖404处理程序和_remap函数的能力.首先,在config/routes.php文件中执行此操作:
$route['404_override'] = 'notfound';
Run Code Online (Sandbox Code Playgroud)
然后创建控制器:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class NotFound extends CI_Controller
{
function __construct()
{
parent::__construct();
}
public function _remap($method)
{
if($this->uri->total_segments() == 1){
// try it out
$this->profile();
}else{
show_404($this->uri->uri_string());
}
}
function profile()
{
echo "Showing profile for [" . $this->uri->segment(1) . "]";
}
}
Run Code Online (Sandbox Code Playgroud)
您必须实现404页面的视图,因为这会覆盖它,但是任何未映射到现有控制器的请求都会在此处进行,您可以根据需要调度它们,包括将名称转换为数据库ID.
如果这对您有用,请告诉我.