在codeigniter分页中使用$ this-> uri-> segment(3)有什么用?

时间:2013-10-10 10:56:54

标签: php codeigniter

听到我的代码

public function viewdeletedrecords()
{   

    if($this->session->userdata('applicant_firstname') == '')
    {
        redirect('papplicant/login') ;
    }
    $profile = $this->m_applicant->showdeletedrecods('','');                                                         
    $total_rows = count($profile) ;
    $config['base_url'] =  base_url().'index.php/papplicant/viewdeletedrecords/' ;
    $config['per_page'] = '10' ;
    $config['full_tag_open'] = '<div>' ;

    $config['full_tag_close'] = '</div>' ;

    $config['first_link'] = 'First' ;

    $config['last_link'] = 'Last' ;

    $config['use_page_numbers'] = TRUE ;

    $config['prev_link'] = '&lt;' ;

    $config['uri_segment'] = 3 ;

    $config['num_links'] = 10 ;         

    $config['cur_tag_open'] = '<b>' ;

    $config['cur_tag_close'] = '</b>' ;

    $config['total_rows'] = $total_rows ;       

    $invoicepaginate = $this->m_applicant->showdeletedrecods( $config['per_page'], $this->uri->segment(3)) ;    

    $this->pagination->initialize($config);     

    $data4 = array(                             

    'data' => $invoicepaginate                                                                                       

    ) ;

    $this->load->view('applicant', $data4);

}

codeigniter中$this->uri->segment(3)的用法是什么

我输入$this->uri->segment(3);它按预期工作但当我输入$this->uri->segment(4);时它会停止工作

5 个答案:

答案 0 :(得分:50)

这使您可以从URI字符串中检索信息

$this->uri->segment(n); // n=1 for controller, n=2 for method, etc

考虑这个例子:

  

<强> http://example.com/index.php/controller/action/1stsegment/2ndsegment

它会返回

$this->uri->segment(1); // controller
$this->uri->segment(2); // action
$this->uri->segment(3); // 1stsegment
$this->uri->segment(4); // 2ndsegment

答案 1 :(得分:15)

CodeIgniter User Guide说:

  

$这 - &GT; URI-&GT;段(n)的

     

允许您检索特定细分。其中n是段   你想要检索的号码。细分从左到右编号。   例如,如果您的完整网址是:   http://example.com/index.php/news/local/metro/crime_is_up

     

细分数字是这样的:

1. news
2. local
3. metro
4. crime_is_up

因此segment指的是您的网址结构细分。通过上面的示例,$this->uri->segment(3)'metro',而$this->uri->segment(4)'crime_is_up'

答案 2 :(得分:4)

在您的代码中$this->uri->segment(3)指的是您在查询中使用的分页offset。根据您的$config['base_url'] = base_url().'index.php/papplicant/viewdeletedrecords/' ;$this->uri->segment(3),即段3指的是偏移量。第一个分段是controller,第二个分段是method,之后parameters发送给控制器segments

答案 3 :(得分:4)

默认情况下,如果段不存在,则函数返回FALSE(布尔值)。有一个可选的第二个参数,允许您在缺少段时设置自己的默认值。例如,这将告诉函数在发生故障时返回数字零: $ product_id = $ this-&gt; uri-&gt; segment(3,0);

它有助于避免编写这样的代码:

[if ($this->uri->segment(3) === FALSE)
{
    $product_id = 0;
}
else
{
    $product_id = $this->uri->segment(3);
}]

答案 4 :(得分:0)

假设您有这样的网址 http://www.example.com/controller/action/arg1/arg2

如果您想知道在此网址中传递的参数是什么

$param_offset=0;
$params = array_slice($this->uri->rsegment_array(), $param_offset);
var_dump($params);

输出将是:

array (size=2)
  0 => string 'arg1'
  1 => string 'arg2'