获取考虑routes.php的CodeIgniter链接

时间:2016-05-10 22:41:39

标签: codeigniter codeigniter-3

如何考虑routes.php?

链接我网站中的网页

示例:

$route['login'] = 'user/login';

上面的代码允许我看到“用户/登录”只访问“登录”。但是如何使用内部路由(用户/登录)链接到该页面,并得到“外部路由”“登录”。

我认为这很重要,因为我可以更改我的网址,只需修改“routes.php”并将所有内容与内部路由相关联。

从Drupal的角度来看,我的内部路由可以是“node / 1”,外部URL可以是“about-us”。因此,如果我使用“l('node / 1')”,这将返回“about-us”。有没有像“drupal_get_path_alias”这样的函数?

现在我在CI文档中找不到任何指向正确方向的内容。

感谢您的帮助。

2 个答案:

答案 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