首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将自定义消息(或任何其他数据)传递给Laravel 404.blade.php

将自定义消息(或任何其他数据)传递给Laravel 404.blade.php
EN

Stack Overflow用户
提问于 2015-03-20 17:45:13
回答 3查看 14.8K关注 0票数 19

我使用的是Laravel 5,并且我已经在

代码语言:javascript
复制
views/errors/404.blade.php

这个文件会在我每次调用以下命令时呈现:

代码语言:javascript
复制
abort(404); // alias of App::abort(404);

如何传递自定义消息?在404.blade.php中类似这样的内容

代码语言:javascript
复制
Sorry, {{ $message }}

填充者(示例):

代码语言:javascript
复制
abort(404, 'My custom message'); 

代码语言:javascript
复制
abort(404, array(
    'message' => 'My custom message'
));

在Laravel 4中,可以使用App::missing

代码语言:javascript
复制
App::missing(function($exception)
{
    $message = $exception->getMessage();
    $data = array('message', $message);
    return Response::view('errors.404', $data, 404);
});
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-12-06 07:13:38

(注:复制自my answer here。)

在Laravel5中,您可以为/resources/views/errors目录中的每个响应代码提供刀片视图。例如,404错误将使用/resources/views/errors/404.blade.php

手册中没有提到的是,在视图内部,您可以访问$exception对象。因此,您可以使用{{ $exception->getMessage() }}来获取传递给abort()的消息。

票数 38
EN

Stack Overflow用户

发布于 2015-04-15 01:21:29

扩展Laravel的异常处理程序Illuminate\Foundation\Exceptions\Handler,并用您自己的方法覆盖renderHttpException(Symfony\Component\HttpKernel\Exception\HttpException $e)方法。

如果你还没有运行过php artisan fresh,这对你来说会很容易。只需编辑app/Exceptions/Handler.php,或创建一个新文件。

Handler.php

代码语言:javascript
复制
<?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);
    }
  }

}

然后,在404.blade.php中使用$e变量。

代码语言:javascript
复制
abort(404, 'Something not found');

在你的404.blade.php

代码语言:javascript
复制
{{ $e->getMessage() }}

有关其他有用的方法,如getStatusCode(),请参阅Symfony\Component\HttpKernel\Exception

票数 7
EN

Stack Overflow用户

发布于 2015-03-20 17:57:16

全局共享一个变量怎么样?

代码语言:javascript
复制
 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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29163564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档