[英]Laravel Blade Undefined Variable Error But The Variable Is Defined
这是一个非常奇怪的错误。 在我的刀片视图中:
<?php //dd($site); ?>
@if($site==='site1')
在第二行@if($site==='site1')
我得到一个Undefined variable: site
错误。 但是,如果我取消注释转储并死掉,我会设置$site
变量。 它实际上在下一行,它告诉我它在刀片中没有设置$site
变量。 我的if
语句语法错误吗?
它看起来对我来说是正确的,文档给出了:
@if (count($records) === 1)
I have one record!
@elseif (count($records) > 1)
I have multiple records!
@else
I don't have any records!
@endif
在@if
和第一个括号(
之间添加一个空格没有区别。
我尝试清除视图缓存,但这也没有什么区别。 其他所有更改都会被注册,例如,如果我删除变量名前面的$
,我会得到一个未定义的常量错误。 我在本地开发。
我完全不知所措,因为即使变量在刀片深处是三个级别,我也正确地通过了它,并且我用转储和死亡确认了它。 有条件的只是不会拿起它。
我将它传递到这样的视图中:
@component('pages.common.component.mycomponent',['site'=>$site])
@endcomponent
再上一层是这样的:
@component('pages.common.parent.mycomponent',['site'=>'site1'])
@endcomponent
任何想法我都会非常感激!
编辑:
dd()
调用输出:
“站点 1”
作为一个字符串。
答案稍后在第二级(我有错误的组件的父级)有两个声明到第三个组件,其中一个没有传递$site
变量。 当然,因为我在第三个组件中使用了内联dd()
调试方法,所以起初它没有意义,因为它到达了第一个声明而不是第二个声明。
帮助我的是在整个视图上调用 render 方法并将其作为字符串输出,所以我可以在第一个声明中看到它,但在第二个声明中没有。
所以在 controller 中,而不是:
return view('pages.routes.parent', $params);
我做了:
dd(view('pages.routes.parent', $params)->render());
将整个视图作为一个字符串 output 来跟踪我丢失数据的位置。 检查storage
编译的视图并没有帮助,因为它们是每个组件或视图特有的部分。
请注意,要使其正常工作,我必须将@if
条件句包装在另一个@if
条件句中,检查$site
变量是否为isset()
。
希望这可以在将来对其他人有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.