如何考虑routes.php?
链接我网站中的网页示例:
$route['login'] = 'user/login';
上面的代码允许我看到“用户/登录”只访问“登录”。但是如何使用内部路由(用户/登录)链接到该页面,并得到“外部路由”“登录”。
我认为这很重要,因为我可以更改我的网址,只需修改“routes.php”并将所有内容与内部路由相关联。
从Drupal的角度来看,我的内部路由可以是“node / 1”,外部URL可以是“about-us”。因此,如果我使用“l('node / 1')”,这将返回“about-us”。有没有像“drupal_get_path_alias”这样的函数?
现在我在CI文档中找不到任何指向正确方向的内容。
感谢您的帮助。
答案 0 :(得分:0)
您可以使用.htaccess
文件:
Redirect 301 /user/login http://www.example.com/login
答案 1 :(得分:0)
您可以查看使用类似
的内容http://osvaldas.info/smart-database-driven-routing-in-codeigniter
这将允许您在数据库中配置路由。然后,如果您想通过这样的模型动态创建链接:
class AppRoutesModel extends CI_Model
{
public function getUrl($controller)
{
$this->db->select('slug');
$this->db->from('app_routes');
$this->db->where('controller', $controller);
$query = $this->db->result();
$data = $query->row();
$this->load->library('url');
return base_url($data->slug);
}
public function getController($slug)
{
$this->db->select('controller');
$this->db->from('app_routes');
$this->db->where('slug', $slug);
$query = $this->db->result();
$data = $query->row();
return $data->controller;
}
}
这些尚未经过全面测试,但希望能给你一般的想法。
我希望这可以帮助你:)
编辑------------------------------
您可以创建routes_helper.php并添加类似
的功能//application/helpers/routes_helper.php
function get_route($path)
{
require __DIR__ . '/../config/routes.php';
foreach ($route as $key => $controller) {
if ($path == $controller) {
return $key;
}
}
return false;
}
$this->load->helper('routes');
echo get_route('controller/method');
这大致是你想要的,尽管这种方法不支持可以添加的$ 1 $ 2等变量来反映:num或:任何存在的通配符。您可以编辑该功能以添加该功能,但这将指向正确的方向:D