为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel Blade 变量范围

Laravel Blade 变量范围

PHP
慕尼黑的夜晚无繁华 2022-11-04 16:36:10
扩展时,我在 laravel 刀片中的可变范围有问题home.blade.php(由控制器使用):@extends('templates.BaseBlade')@section('head')    <?php    echo $testvar;    ?>BaseBlade.blade.php:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html><head>    <meta name="csrf-token" content="{{ csrf_token() }}">    <?php        $testvar = "this is a test";    ?>我在想 BaseBlade 会被编译,然后 $testvar 应该可以被家庭刀片访问,但这似乎并没有按这个顺序发生
查看完整描述

2 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

所以在 laravelBlade模板中,变量的作用域是从父级传递给子级的。


Blade tempalte的继承


因此,如果您从这样的视图开始:


return view('template-1')->with([

    'var1' => 'Test One',

    'var2' -> 'Test Two',

]);

在您的刀片模板中,您可以使用以下{{ }}语法回显这些:


{{ $var1 }} # Test One

{{ $var2 }} # Test Two

现在假设您正在使用 an @include,您将在范围内同时获得var1&var2并能够覆盖它们并为您分配新变量,如下所示:


@include('_includes.include-1', ['var2' => 'Foo', 'var3' -> 'Bar'])

{{ $var1 }} # Test One

{{ $var2 }} # Foo

{{ $var3 }} # Bar

现在,如果您想让一个变量可用于所有扩展给定模板的刀片模板(即,如果 "template-1" extends app)。您可以像这样绑定全局变量ServiceProvider;


BladeServiceProvider


View::share('var4', 'Foo-Bar']);

现在您可以访问var4所有模板


{{ $var1 }} # Test One

{{ $var2 }} # Test Two

{{ $var4 }} # Foo-Bar


查看完整回答
反对 回复 2022-11-04
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

上面的答案是信息性的,因此被选为接受的答案。然而,我找到了一个简单的解决方案,将它放在 /routes/web.php 的顶部,以便基本视图(没有控制器)可以访问它并且所有刀片都有范围


\View::share([

    "myvariable1"=>"myValue1",

    "myvariable2"=>"myValue2";

]);


查看完整回答
反对 回复 2022-11-04
  • 2 回答
  • 0 关注
  • 95 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信