我使用的是Laravel 5,我在
中创建了一个文件404.blade.php
views/errors/404.blade.php
每次调用时都会呈现此文件:
abort(404); // alias of App::abort(404);
如何传递自定义讯息? 404.blade.php
Sorry, {{ $message }}
填写(示例):
abort(404, 'My custom message');
或
abort(404, array(
'message' => 'My custom message'
));
在Laravel 4中,可以使用App::missing
:
App::missing(function($exception)
{
$message = $exception->getMessage();
$data = array('message', $message);
return Response::view('errors.404', $data, 404);
});
答案 0 :(得分:36)
(注意:从my answer here复制。)
在Laravel 5中,您可以为DATETIME()
目录中的每个响应代码提供Blade视图。例如,404错误将使用/resources/views/errors
。
手册中未提及的是,您可以在视图中访问/resources/views/errors/404.blade.php
对象。因此,您可以使用$exception
将您传递的信息传递到{{ $exception->getMessage() }}
。
答案 1 :(得分:7)
使用您自己的方法扩展Laravel的异常处理程序,Illuminate\Foundation\Exceptions\Handler
和覆盖renderHttpException(Symfony\Component\HttpKernel\Exception\HttpException $e)
方法。
如果您还没有运行php artisan fresh
,那么对您来说很容易。只需编辑app/Exceptions/Handler.php
,或创建新文件。
<?php namespace App\Exceptions;
use Exception;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Symfony\Component\HttpKernel\Exception\HttpException;
class Handler extends ExceptionHandler {
// ...
protected function renderHttpException(HttpException $e) {
$status = $e->getStatusCode();
if (view()->exists("errors.{$status}")) {
return response()->view("errors.{$status}", compact('e'), $status);
}
else {
return (new SymfonyDisplayer(config('app.debug')))->createResponse($e);
}
}
}
然后,在$e
中使用404.blade.php
变量。
即
abort(404, 'Something not found');
并在404.blade.php
{{ $e->getMessage() }}
对于其他有用的方法,例如getStatusCode()
,请参阅Symfony\Component\HttpKernel\Exception
答案 2 :(得分:0)
如何全局共享变量?
view()->share('message', 'llnk has gone away');
// or using the facade
View::share('message', 'llnk has gone away badly');
只需确保在模板中回退到默认值,以防您忘记设置它。
请参阅与视图共享数据:http://laravel.com/docs/5.0/views