如何解决Laravel Blade未定义变量错误,但变量已定义
这是一个非常奇怪的错误。在我的刀片视图中:
<?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()
呼叫输出:
“ site1”
作为字符串。
解决方法
答案是在第二级的后面(我遇到错误的组件所在),对此第二个组件有两个声明,其中一个没有传递$site
变量。当然,因为我在第三个组件中使用了内联dd()
调试方法,所以起初没有意义,因为它命中了第一个声明,但没有第二个声明。
帮助我的是在整个视图上调用render方法并将其输出为字符串,因此我可以看到它在第一个声明中,而在第二个声明中没有。
因此在控制器中,而不是:
return view('pages.routes.parent',$params);
我做到了:
dd(view('pages.routes.parent',$params)->render());
可以将整个视图作为一个字符串输出来跟踪我丢失数据的位置。检查storage
编译视图无济于事,因为它们是每个组件或视图所特有的部分。
为此,我不得不将@if
条件包装在另一个@if
条件中,检查$site
变量是否为isset()
。
希望这可以在将来对其他人有所帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。