无法访问@include 之外的变量

Posted

技术标签:

【中文标题】无法访问@include 之外的变量【英文标题】:Cant access variable outside the @include 【发布时间】:2021-01-15 23:06:25 【问题描述】:

大家好,我遇到了问题

我之前使用过这种布局架构并面临这个问题

在 master.blade.php

code.....

@php $foo = "bar"; @endphp

@yield('main')

code ends....

在contact.blade.php中

@extends('master')

code...

@section('main')

@php echo $foo; @endphp

@endsection

code ends...

错误:contact.blade.php 中未定义的变量 foo

.................................................. ......................

然后我切换到新架构,我又面临同样的问题。

在 master.blade.php 中

code.....

@php $foo = "bar"; @endphp

code ends....

在contact.blade.php中

code...

@includes('master')

@php echo $foo; @endphp

code ends...

错误:contact.blade.php 中未定义的变量 foo

所以建议我如何访问该变量。

【问题讨论】:

您应该看看storage/framework/views 中生成的php 文件,并尝试了解它在幕后实际做了什么。这会更有意义 嗨@CornelRaiu 感谢您的回复,但如果我做错了什么? 这能回答你的问题吗? Laravel Blade passing variable with string through @include causes error laravel.com/docs/7.x/blade#including-subviews 不,这个链接显示了如何将数据传递到@include 【参考方案1】:

添加 @php global $foo; @endphp

在你所有的刀片中。

解决我的问题,因为我在子刀片中使用变量来控制在主刀片中包含哪些 javascript(避免重复)。

【讨论】:

以上是关于无法访问@include 之外的变量的主要内容,如果未能解决你的问题,请参考以下文章

无法访问 DLL 外部的内部类和某些公共变量不可访问

如何在javascript中访问当前范围之外的变量?

无法访问静态函数内部的私有变量

如何在 js puppeteer 中访问 map 函数之外的变量

无法访问自定义 Front Matter 变量

C ++:函数无法访问main()函数中定义的变量[关闭]