我试着在Yii 2中处理HttpExceptions来为Webusers显示错误消息。我把一切都设置成这样:http://www.yiiframework.com/doc-2.0/guide-runtime-handling-errors.html
控制器
namespace app\controllers;
use Yii;
use yii\web\Controller;
class SiteController extends Controller
{
public function actions()
{
return [
'error' => [
'class' => 'yii\web\ErrorAction',
],
];
}
}
public function actionError()
{
$exception = Yii::$app->errorHandler->exception;
if ($exception !== null) {
return $this->render('error', ['exception' => $exception]);
}
}
当我抛出这样的错误时:
throw new HttpException(404,"This is an error. Maybe Page not found!");
我想在我的视图文件中显示文本或至少在文档中描述的变量-但所有变量都是受保护的或私有的。有什么想法如何做到这一点?
检视
$exception->statusCode // works
$exception->message // proteced
5条答案
按热度按时间3ks5zfa01#
首先,您定义了
error
操作两次,一次是作为siteController的一个方法,第二次是在actions
方法中。您的错误信息可以在视图文件中使用'$message'变量来检索,使用$exception->message
是不正确的。Yii文档允许在您的错误视图文件中使用这些变量;mzaanser2#
试试这个
l7wslrjt3#
不确定你是否检查了
views\site\error.php
中的视图文件,我花了一段时间才意识到这是用来显示错误页面的。fykwrbwg4#
也许你可以尝试添加额外的内容,扩展Yii2错误信息中的异常,就像这样。创建一个新的自定义php文件,名为ErrorMsg.php
并在任何需要的地方调用函数。示例
nwsw7zdq5#
如果你想直接从异常类中得到异常消息(Any of it,例如NotFoundException),你会发现
Exception::$message
是受保护的属性,但是它有Exception::getMessage()
的公共方法,所以在你的错误视图中,只需调用它。