在控制器的索引函数中获取uri段 - Codeigniter

时间:2014-04-01 19:58:45

标签: php codeigniter

我有一个网址

www.xample.com/app/pay/11

薪水是我的控制者。 控制器定义为

class Pay extends CI_Controller
{
    function __construct()
    {
        parent::__construct();
        $this->load->library('tank_auth');
        $this->load->model('users');
    }

    function index()
    {
        //How can I get 11 from uri ?
    }
}

我在这里没有使用任何额外的功能。我使用索引功能。我怎么能得到值11?

4 个答案:

答案 0 :(得分:3)

您可以使用_remap()为发送到此课程的任何内容运行index()函数。

class Pay extends CI_Controller
{
    function __construct()
    {
        parent::__construct();
        $this->load->library('tank_auth');
        $this->load->model('users');
    }

    function _remap($method, $params=array())
    {
        $methodToCall = method_exists($this, $method) ? $method : 'index';
        return call_user_func_array(array($this, $methodToCall), $params);
    }

    function index($val)
    {
        echo $val;
    }
}

现在,当您转到www.xample.com/app/pay/11时,系统会调用index()

答案 1 :(得分:2)

您可以使用codeigniter的URI Segment类。 它就像$this->uri->segment(n)

在您的情况下,您需要获得第3段。

因此,它将是 -

echo $this->uri->segment(3);

答案 2 :(得分:1)

http://localhost/abc/sellers/YWRtaW4=

http://localhost/abc/sellers/follow/u/1

function _remap($method, $params=array())
    {
        $method_exists = method_exists($this, $method);
        $methodToCall = $method_exists ? $method : 'index';
        $this->$methodToCall($method_exists ? $params : $method);
    }


function index($username) {
        echo $username;
}

function follow($param){
   print_r($param);
}

尝试使用此功能..

答案 3 :(得分:0)

在config / autoload.php中启用url helper

$autoload['helper'] = array('url');

或在所需的控制器或其方法中加载url helper

$this->load->helper('url');

然后在控制器

中使用以下内容
$this->uri->segment(3);