2016-06-23 50 views
1

没有显示我有一个页面是由ID访问e.g http:/localhost/v2/indicator/details/directives/4404页的笨

但是当我删除id e.g http:/localhost/v2/indicator/details/directiveshttp:/localhost/v2/indicator/details/directives/mail.html它仍试图访问该页面,并给我的错误。 我希望它给我一个404找不到页面,我有。

错误

Message: Missing argument 2 for Indicator::details() 

Filename: controllers/Indicator.php 

Line Number: 140 

Backtrace: 

File: C:\wamp\www\v2\application\controllers\Indicator.php Line: 140 
Function: _error_handler 

File: C:\wamp\www\v2\index.php Line: 315 Function: require_once 
Severity: Notice 

Message: Undefined variable: id 

Filename: controllers/Indicator.php 

Line Number: 154 

Backtrace: 

File: C:\wamp\www\v2\application\controllers\Indicator.php Line: 154 
Function: _error_handler 

File: C:\wamp\www\v2\index.php Line: 315 Function: require_once 

对于细节

控制器部
public function details($directive, $id) { 

     $this->data['current_user_menu'] = ''; 
     if($this->ion_auth->in_group('admin')) 
     { 


     $data['user'] = $this->ion_auth->user()->row(); 
     $data['indicators'] = $this->core->getIndicators(); 
     // load views and send data 
     $this->data['current_user_menu'] = $this->load->view('header', $data); 
     $this->data['current_user_menu'] = $this->load->view('templates/view_indicator', $data); 
     $this->data['current_user_menu'] = $this->load->view('footer_main'); 
     } 
     else 
     { 
     //If no session, redirect to login page 
     redirect('auth/login'); 
     } 
    } 

视图有

<?php $in_id = $this->uri->segment(4);?> 

自定义404控制器

class My404 extends CI_Controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 

    public function index() 
    { 
     $this->layout->set_body_attr(array('class' => 'gray-bg')); 

     $this->layout->add_css_files(array('bootstrap.min.css'), base_url().'assets/css/'); 
     $this->layout->add_css_files(array('font-awesome.css'), base_url().'assets/font-awesome/css/'); 
     $this->layout->add_css_files(array('animate.css','style.css'), base_url().'assets/css/'); 
     $this->output->set_status_header('404'); 
     $this->load->view('404');//loading in my template 
    } 
} 
+1

我们不能做你的代码,你应该张贴您的'指标::细节()'控制器的代码。 –

+0

@ArshSingh我已经做了一些编辑,如果这会对我有帮助 –

回答

2

尝试这样

功能

  1. is_int in php.net
  2. empty in php.net
  3. show_404 in codeigniter.com

在指标控制器

public function details($directive, $id) { 

    if (!is_int($id) || empty($id)) 
    { 
     show_404(); 
    } 
    else { 
     $this->data['current_user_menu'] = ''; 
     if($this->ion_auth->in_group('admin')) 
     { 
      $data['user'] = $this->ion_auth->user()->row(); 
      $data['indicators'] = $this->core->getIndicators(); 
      // load views and send data 
      $this->data['current_user_menu'] = $this->load->view('header', $data); 
      $this->data['current_user_menu'] = $this->load->view('templates/view_indicator', $data); 
      $this->data['current_user_menu'] = $this->load->view('footer_main'); 
     } 
     else 
     { 
      //If no session, redirect to login page 
      redirect('auth/login'); 
     } 
    } 
} 
+0

我会让$ $ id参数为可选参数,因为这似乎是问题的关键。 '公共函数的详细信息($指令,$ id = null)' –

+0

我的404是自定义的,并有一个控制器...我怎么称呼它。 **看到编辑** –

+0

使用**重定向**就像这样''redirect('auth/login');' –