如何在 Laravel 中通过中止发送消息

nik*_*aft 2 php laravel laravel-5

如果签名无效,我必须中止某些操作,并且我还想向呈现它的视图发送一条消息。我记得一年前,我在之前的一个项目中能够做这样的事情。但现在当我尝试这个时

    if (!$request->hasValidSignature()) {
        abort(401, 'Signature is not valid.');
    }
Run Code Online (Sandbox Code Playgroud)

我收到一条错误,指出 $message 不可用

这是 abort 函数的定义,因此很明显它将消息作为输入。

public function abort($code, $message = '', array $headers = [])
{
    if ($code == 404) {
        throw new NotFoundHttpException($message);
    }

    throw new HttpException($code, $message, null, $headers);
}
Run Code Online (Sandbox Code Playgroud)

我想知道为什么我会收到此错误:

ErrorException (E_ERROR)
Undefined variable: message (View: 
C:\laragon\www\laraone\resources\views\errors\401.blade.php)
Run Code Online (Sandbox Code Playgroud)

这是我的 401.blade.php 使用该变量的一部分......

<div class="content">
    <div class="title">401</div>Unauthorized action, {{ $message }}
</div>
Run Code Online (Sandbox Code Playgroud)

bal*_*ing 5

使用$exception->getMessage()。来自文档

HttpException函数引发的实例将abort作为变量传递给视图$exception<h2>{{ $exception->getMessage() }}</h2>

所以在你的情况下:

<div class="content">
    <div class="title">401</div>Unauthorized action, {{ $exception->getMessage() }}
</div>
Run Code Online (Sandbox Code Playgroud)