Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将变量传递到Laravel中的http错误布局?_Php_Laravel - Fatal编程技术网

Php 如何将变量传递到Laravel中的http错误布局?

Php 如何将变量传递到Laravel中的http错误布局?,php,laravel,Php,Laravel,我正在疯狂地寻找解决这个问题的办法。我需要做一件非常简单的事情-将变量传递到定制的404页面布局。Laravel通过创建类似于/resources/views/errors/404.blade.php的文件,让您可以轻松地为http错误创建自定义视图,但为什么它不让您轻松地向它传递变量呢 我试图覆盖app/Exceptions/Handler.phprender方法: public function render($request, Exception $e) { if(

我正在疯狂地寻找解决这个问题的办法。我需要做一件非常简单的事情-将变量传递到定制的404页面布局。Laravel通过创建类似于
/resources/views/errors/404.blade.php的文件,让您可以轻松地为http错误创建自定义视图,但为什么它不让您轻松地向它传递变量呢

我试图覆盖
app/Exceptions/Handler.php
render方法:

public function render($request, Exception $e)
    {
        if($this->isHttpException($e)){
            switch ($e->getStatusCode()) {
                case '404':
                      parent::render($request, $e)->flash();
                      $categories = Category::hierarchy();
                      return View::make('errors.404')->with(['categories' => $categories]);
                break;

                default:
                    return $this->renderHttpException($e);
                break;
            }
        }
        return parent::render($request, $e);
    }
但无论出于什么原因,这都不起作用,我无法访问主布局中的categories变量。我在一个在错误页面上显示标题的站点上工作,但是如果我不能将变量传递到错误视图,那么就无法创建标题

未定义变量:类别

有人知道会出什么问题吗?这是不可能的吗?我已经读到你可以传递异常并从中获得消息,但这有什么意义?我不想复制整个布局并重写所有变量。

添加

public function boot()
{
  view()->composer('my.view', function($view)
  {
    $view->with('myVariable', 'whatever you want');
  });
}
AppServiceProvider.php

这将把
您想要的任何内容作为
$myVariable
传递到
my
文件夹中的
view.blade.php
。可能有打字错误


更多信息:(9:32编码)

您正在寻找视图生成器:

5.4中有一些突破性的更改,您应该使用
作为错误视图的delimeter,例如:

View::composer('errors::*', function($view){
    $view->with('varName', 'value');
})

这个把戏对我有用

在控制器方法中:

abort(404,json_encode($categories));
在404.blade.php中:

@php $categories = json_decode($exception->getMessage()) @endphp

@foreach($categories as $category)...

我正在创建自定义错误布局(views/error/404.blade.php),(必须传递变量以检查用户是否登录)。 你可以用这样的东西

@include('layouts.article', ['mainTitle' => "404, page not found", 'mainContent' => "sorry, but the requested page does not exist :("])
<?php $data=[
        'mainTitle' => "404, page not found",
        'mainContent' => "sorry, but the requested page does not exist :("
    ]  ?>
@include('layouts.article', $data)
还是像这样

@include('layouts.article', ['mainTitle' => "404, page not found", 'mainContent' => "sorry, but the requested page does not exist :("])
<?php $data=[
        'mainTitle' => "404, page not found",
        'mainContent' => "sorry, but the requested page does not exist :("
    ]  ?>
@include('layouts.article', $data)

@包括('layouts.article',$data)

参考:

这只适用于常规视图,不适用于自定义错误页面。