如何让CodeIgniter忽略输入到URL中的最后一个段 - 但仍保留在那里?

时间:2014-01-04 21:54:17

标签: php codeigniter codeigniter-routing

我正在使用CodeIgniter从头开始构建用户个人资料部分。会发生什么,用户将输入URL:

www.somesite.com/profile/view/<USERNAME>

个人资料是文件夹&amp; 视图是控制器)

我会使用IF ELSE语句检查数据库中是否有 $ currentURL (见下文)并加载所需的页面。

但是现在正在发生的事情是它正在寻找一个功能(我认为)来执行 view 。但没有。这导致404错误。

CodeIgniter是否可以忽略该URL的最后一段但仍保留在那里以便我可以使用;

$currentURL = $this->uri->segment(3);

抓住 USERNAME

感谢您查看我的问题,

路易斯。

1 个答案:

答案 0 :(得分:2)

如果我理解正确的话:

声明您的函数如下

public function view($var1, $username = "") {...}

必须填写$var1,但可以省略$username,其默认值为""


<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class View extends CI_Controller { //can not belive that View is not reserved word

    public function __construct() {
        parent::__construct();
    }

    public function index() {
        //index() function can not have parameters
        //redirect('view/show');
        //if no username is set, do default thing like show list of users
        //load view or something
    }

    public function show($username = "") {
        //this function can have parameters
        //load views from here
        $this->load->view('abc_view');
    }
}

之后添加到routes.php

$route['profile/view/(:any)'] = "profile/view/show/$1";

这将允许您按预期拥有漂亮的网址

site.com/profile/view/Peterson123

注意使用“路由”方法时,redirect(profile/view/show)

中不index()
使用_remap()

另一个方法已解释为here