Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.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
将数据传递到Laravel中的扩展视图和子视图_Laravel_Laravel Blade - Fatal编程技术网

将数据传递到Laravel中的扩展视图和子视图

将数据传递到Laravel中的扩展视图和子视图,laravel,laravel-blade,Laravel,Laravel Blade,起初,我只有一个视图文件,其中包含显示页面的所有代码。但现在我决定拆分代码部分。 因此,正如我所了解的,我将创建一个子视图,将我的节代码写入该文件,现在在Laravel Controller中返回子视图。所以,现在传递的数据进入子视图,在父视图中,在调用yield函数之前,我无法访问它们。但是在父视图中,在调用yield之前,我需要一些数据。那么,如何传递在父视图和子视图中都可用的数据呢 我已经尝试将数据作为第二个参数传递到extends(),但是是这样的 数据将在我调用yield时可用 控制器

起初,我只有一个视图文件,其中包含显示页面的所有代码。但现在我决定拆分代码部分。 因此,正如我所了解的,我将创建一个子视图,将我的节代码写入该文件,现在在Laravel Controller中返回子视图。所以,现在传递的数据进入子视图,在父视图中,在调用
yield
函数之前,我无法访问它们。但是在父视图中,在调用
yield
之前,我需要一些数据。那么,如何传递在父视图和子视图中都可用的数据呢

我已经尝试将数据作为第二个参数传递到
extends()
,但是是这样的 数据将在我调用
yield
时可用

控制器:

class walletsController扩展控制器
{
函数名(){
返回视图(“子视图”[“somedata”=>$somedata])
}
}
子视图刀片文件:

@extends('parentview',["somedata" => $somedata] )
@section('wallet')
// some codes here
@endsection
// some codes
@yield('wallet')
parentview刀片文件:

@extends('parentview',["somedata" => $somedata] )
@section('wallet')
// some codes here
@endsection
// some codes
@yield('wallet')

当我在调用
yield
之前尝试使用在
extends()
中传递的数据时,它会给我一个垃圾值。

在这种情况下,我建议使用Laravel的视图生成器

视图生成器允许您将变量传递给所需的任何视图(id无论是父视图还是子视图)

在您的情况下,您将传递一个仅在父视图上使用的变量,对吗? AppServiceProvider(
boot()
method)中的代码如下:

view()->composer(['parentview','folder.other view,您想要的'],function($view){
$someVar=‘someVar值’;
$view->with(['someVar'=>$someVar]);
});
您还可以使用
*
将变量传递给每个视图:

view()->composer('*',函数($view){
$someVar=‘someVar值’;
$view->with(['someVar'=>$someVar]);
});

当然,您可以在文档中进一步阅读:

在这种情况下,我建议使用Laravel的视图生成器

视图生成器允许您将变量传递给所需的任何视图(id无论是父视图还是子视图)

在您的情况下,您将传递一个仅在父视图上使用的变量,对吗? AppServiceProvider(
boot()
method)中的代码如下:

view()->composer(['parentview','folder.other view,您想要的'],function($view){
$someVar=‘someVar值’;
$view->with(['someVar'=>$someVar]);
});
您还可以使用
*
将变量传递给每个视图:

view()->composer('*',函数($view){
$someVar=‘someVar值’;
$view->with(['someVar'=>$someVar]);
});

当然,您可以在文档中进一步阅读:

但是我的数据是在控制器中创建的,视图生成器如何知道我的数据在哪里?这是一个非常特定的数据,不能放在更大的范围内?如果是这样,请使用视图生成器方法。否则,您应该考虑提取生成此数据的逻辑并重用它。另外,看看这个问题:–可能会有帮助。但是我的数据是在控制器中创建的,视图生成器如何知道我的数据在哪里?这是一个非常特定的数据,不能放在更大的范围内?如果是这样,请使用视图生成器方法。否则,您应该考虑提取生成此数据的逻辑并重用它。另外,看看这个问题:–它可能会有帮助。