我有一些常见的数据从 helper
. 现在我想在所有的视图中使用这些数据。所以,我试图在下面声明该数据。app.blade.php
并试图通过它的部分。
这是我的 app.blade.php
-
<!doctype html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- CSRF Token -->
<meta name="csrf-token" content="{{ csrf_token() }}">
<title>ABC| @yield('title')</title>
<!-- Fonts -->
<link rel="dns-prefetch" href="//fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet">
<link href="{{ asset('/assets/plugins/bootstrap/css/bootstrap.min.css') }}" rel="stylesheet">
<link href="{{ asset('/assets/abc/css/style.css') }}" rel="stylesheet">
<?php
//get theme
$theme = AppHelper::instance()->getTheme();
//get theme folder
$themeFolder = $theme[0]->websiteAdmin;
//set include files section path
$includePath = 'frontend.'.$theme[0]->themeName.'.sections.';
?>
</head>
@yield('content')
</html>
这里我想传递变量 $theme, $themefolder, $includePath
到 @yield('content')
.
我尝试了以下代码 -
@yield('content', array('theme'=> $theme, 'themeFolder'=> $themeFolder, 'includePath'=> $includePath))
但是得到的错误是这些变量未定义。
Undefined variable: theme
请你帮我如何将数据从@extend传递到@yield?Thank you in advance.
您应该使用视图合成器来完成这一任务。它们允许您只在一个地方调用相同的数据,从而在多个视图中传递相同的数据。
在你的 providers/AppServiceProvider.php
你可以在你的引导方法中添加以下内容。
use Illuminate\Support\Facades\View; //import view facade
public function boot()
{
View::composer(['view-name', 'another-view-name'], function($view){
$theme = AppHelper::instance()->getTheme();
$themeFolder = $theme[0]->websiteAdmin;
$includePath = 'frontend.'.$theme[0]->themeName.'.sections.';
$view->with(compact('themeFolder', 'includePath', 'theme'));
});
}
View::composers
第一个参数是一个视图数组,把你想传递数据的所有视图放在这里。['view-name', 'another-view-name']
它也可以接受一个单一的字符串。
现在,数据将可以通过 $themeFolder
$includePath
和 $theme
变量
如果你想让这些数据传递给所有的视图,你可以做的是 '*'
作为第一个参数。注这将把数据传递给你创建的每一个视图,只需做 '*'
如果你想让每个视图都包含数据!否则,请单独指定视图。否则,请单独指定视图。
如果你想让某一文件夹内的所有视图都包含数据,你可以这样做 'folder-name.*'
.
或者,唯一的其他方法是将数据传给你的 @yield
是返回视图 app.blade.php
与你的控制器中的变量。