[英]CakePHP3 - Custom page error 404 not working
我正在按照http://book.cakephp.org/3.0/en/development/errors.html#exception-renderer进行教学,但无法正常工作,并显示空白页。
在config / bootstrap.php中
use App\Error\AppError;
$errorHandler = new AppError();
$errorHandler->register();
在src / Error / AppError.php中
<?php
namespace App\Error;
use Cake\Error\BaseErrorHandler;
class AppError extends BaseErrorHandler
{
public function _displayError($error, $debug)
{
return 'There has been an error!';
}
public function _displayException($exception)
{
return 'There has been an exception!';
}
public function handleFatalError($code, $description, $file, $line)
{
return 'A fatal error has happened';
}
}
我在src / Template / Layout / my_error.ctp中创建my_error.ctp。 在我的src / Template / Error / error404.ctp中,将布局更改为my_error.ctp。
$this->layout = 'my_error';
最后,在我的控制器中
use Cake\Network\Exception\NotFoundException;
$staff = $this->Staff->find()->where(['Staff.StaffId = '=> $id, 'Staff.PartnerId = ' =>$this->partnerId])->first();
if (empty($staff)) {
throw new NotFoundException(__('Staff not found'));
}
每当遇到空白页时,请启用调试模式,然后再次访问URL,并检查错误日志。
但是,这种情况下的问题很可能是文档不正确/具有误导性,因为示例应用程序错误根本不会做任何事情。 带有_
前缀的方法必须加以protected
,让它们返回某些内容无效,而handleFatalError
则返回布尔值。
只需查看Cake\\Error\\BaseErrorHandler
的源代码和核心错误处理程序Cake\\Error\\ErrorHandler
,您覆盖的方法就可以生成输出!
您可能希望将其作为问题报告给GitHub 。
如果您要做的只是创建一个自定义4xx
错误页面,那么您要做的就是相应地编辑src/Template/Error/error400.ctp
模板。
我发现了我的错误。 :(因为在bootstrap.php中,我在文件末尾复制以下代码。因此Cake无法理解。请关闭此问题。感谢您的支持。
use App\Error\AppError;
$errorHandler = new AppError();
$errorHandler->register();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.