thinkphp的404页面使用

关于 空控制器 与 404
 
配置文件 config.php 代码
<?php
returnarray(
    // 使用 'ERROR_PAGE' 的配置不能返回 404 状态码
    'TMPL_EXCEPTION_FILE'   => SPSTATIC.'404.html',
    //'ERROR_PAGE'   => __ROOT__.'/statics/404.html',
);
 
空控制器 EmptyController.class.php 代码
class EmptyController extends Controller {
    function _empty(){
        // 这样写就够了
        header("HTTP/1.1 404 Not Found");
        $this -> display();        //会自动调用配置里的 404 页面设置
    }
    function index() {
        // 这样写就够了
        header("HTTP/1.1 404 Not Found");
        $this -> display();        //会自动调用配置里的 404 页面设置
    }
}
 
注意啦:
以上对于 控制器和方法 为空时都是有效的,但对于通过 链接输入一些不存在的 id 值或 页码 p 值时,会显示一个没有数据填充的空页面。这就需要自己在输出数据的控制器方法里再设置了。
比如
class ArticleController extends Controller {
    function index() {
        $id = I('get.id', 0, 'intval');
        $Article = M('Article');
        $showart = $Article -> find($id);
 
        //判断,如果通过链接手工输入的 id ,在数据库中不存在 而取得的数据为 空时
        if($showart){
            // 有数据时,输出到模板
            $this -> display();
        }else{
            // 手工输入 id 取得空数据,输出404,这样写就够了
            header("HTTP/1.1 404 Not Found");
            $this -> display();        //会自动调用配置里的 404 页面设置
        }
    }
}