我在主布局中有一个局部视图,这是导航栏.我有一个变量$userApps.此变量检查用户是否已启用应用程序(true),如果已启用,则我想在导航栏中显示应用程序的链接.
主页扩展了master.layout,其中包括partials.navbar
我在navbar.blade.php中的代码是这样的:
@if ($userApps)
// display link
@endif
Run Code Online (Sandbox Code Playgroud)
但是我得到一个未定义的变量错误.如果我在带有控制器的普通视图中使用它,它在我声明变量并将控制器路由到视图后工作正常.我不认为我可以将控制器放到布局中,因为我无法将控制器路由到局部视图,所以我如何优雅地做到这一点?
Yur*_*nko 13
你用的是什么版本的Laravel?应该是这样的:
@include('partials.navbar', ['userApps' => $userApps])
Run Code Online (Sandbox Code Playgroud)
只是为了测试我在本地做了它的工作原理:
routes.php文件
Route::get('/', function () {
// passing variable to view
return view('welcome')->with(
['fooVar' => 'bar']
);
});
Run Code Online (Sandbox Code Playgroud)
资源/视图/ welcome.blade.php
// extanding layout
@extends('layouts.default')
Run Code Online (Sandbox Code Playgroud)
资源/视图/布局/ default.blade.php
// including partial and passing variable
@include('partials.navbar', ['fooVar' => $fooVar])
Run Code Online (Sandbox Code Playgroud)
资源/视图/谐音/ navbar.blade.php
// working with variable
@if ($fooVar == 'bar')
<h1>Navbar</h1>
@endif
Run Code Online (Sandbox Code Playgroud)
所以问题必须在其他方面...检查路径和变量名称.
其他答案对我不起作用,或者似乎只适用于旧版本。对于 Laravel 7.x 等较新版本,语法如下。
在父视图中:
@include('partial.sub_view', ['var1' => 'this is the value'])
Run Code Online (Sandbox Code Playgroud)
在子视图中:
{{ $var1 }}
Run Code Online (Sandbox Code Playgroud)