强制使用codeigniter自定义404

时间:2016-09-10 22:40:30

标签: php codeigniter

我有一个自定义404控制器。它工作正常。在routes.php我有:

$route['404_override'] = 'custom404';

这会访问此控制器:

class custom404 extends MasterController {
public function __construct(){
    parent::__construct();
    }

    public function index(){

        $this->output->set_status_header('404');

        $crit = array(
            'subtype' => 'footer',
            'status' => 'public'
        );
        $res = $this->mongo_db->where($crit)->get('contentobjects');



        $this->pagedata = $res[0];

        $this->load->view('404');

    }
}

我可以从其他控制器拨打电话吗? 目前我只是通过调用(表面上)从不存在的页面来强制解决问题:

if(!$this->viewable($res[0])){
        header('Location: /404');
        die;
    }

1 个答案:

答案 0 :(得分:0)

是的,你可以直接重定向到它。

然而,CI附带一个错误文件夹,包含HTML的子文件夹和404错误视图页面。如果您自定义此页面,则所有标题都将自动正确设置,您可以更清晰地调用它。

if (empty($result))
{
    // show error
    show_error('The result you requested could not be found', '404');
}

或者更简洁:

if (empty($result)) show_error('The result you requested could not be found', '404');

可以使用$ message字段在模板中访问此处的消息。

然后,您可以轻松设置所需的任何代码,例如401等。

http://www.codeigniter.com/user_guide/general/errors.html