404 页面未在 codeigniter 中显示
404 Page not showing in codeigniter
我有一个页面可以通过 id 访问,例如 http:/localhost/v2/indicator/details/directives/4
然而,当我删除 id
例如 http:/localhost/v2/indicator/details/directives
或 http:/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
}
}
这样试试
函数
在指标控制器中
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');
}
}
}
我有一个页面可以通过 id 访问,例如 http:/localhost/v2/indicator/details/directives/4
然而,当我删除 id
例如 http:/localhost/v2/indicator/details/directives
或 http:/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
}
}
这样试试
函数
在指标控制器中
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');
}
}
}