Codeigniter显示错误页面而不是异常错误

时间:2015-08-21 18:26:26

标签: php codeigniter error-handling

这是我的代码

public function movieInfo($movieId = null) {

    // get the data
    $movie = $this->repository->load($movieId);

    $this->set_title(null);

    $data = $this->includes;

    $content_data = array(
        'movie' => $movie,
    );

    $data['content'] = $this->load->view('movie/movie_info', $content_data, true);
    $this->load->view($this->template, $data);

}

当我浏览http://tmdb.instaplace.me/movie/movieinfo/76341时,它会显示我的页面

但是当我浏览http://tmdb.instaplace.me/movie/movieinfo/0

当错误报告设置为开发时,它会显示未捕获的异常页面,否则显示空白页

而不是在开发时显示空白页面或未捕获的异常我希望显示一个页面,其中显示"该ID不存在"例如,或404页 但我的问题是我无法弄清楚如何做到这一点,我正在使用它 php-tmdb wrapper

$movieId变量是来自themoviedb.org的id,用于根据id找到电影

1 个答案:

答案 0 :(得分:1)

if( !  $movie = $this->repository->load($movieId) ){

      $this->_showMovieNotFoundFor($movieId) ;  } 

else{ $this->_showFound($movie) ;  } 

编辑以回答问题====

你必须自己创建_show方法。我们的想法是你只是检查一部电影是否从数据库中恢复过来。在控制器中,您可以更简单地使您的方法更容易维护。除非控制器中的方法必须公开,否则始终将它们设为私有。在codeigniter中,您可以在方法名称前加上下划线,使其成为私有。所以代码

 if( !  $movie = $this->repository->load($movieId)

所以,如果$ movie没有从数据库返回 - 那么请转到

$this->_showMovieNotFoundFor($movieId) ;

我包含了$ movieId,以防错误消息需要它。

否则你从数据库获得了$ movie,所以转到

$this->_showFound($movie) ;

如果我们只是粘贴您的代码,那将是

   function _showFound($movie){

  $this->set_title(null);

    $data = $this->includes;

    $content_data = array(
        'movie' => $movie,
    );

    $data['content'] = $this->load->view('movie/movie_info', $content_data, true);
    $this->load->view($this->template, $data);

}