Debugging Laravel刀片调试视图名称出现错误

Debugging Laravel刀片调试视图名称出现错误,debugging,laravel,views,blade,Debugging,Laravel,Views,Blade,当视图中出现错误时,L4显示一个不错的跟踪,但缓存的文件名: 打开:/var/www/webpage/app/storage/views/1154ef6ad153694fd0dbc90f28999013 如何在视图渲染期间缓存保存视图的路径/名称(在注释或其他内容中)? 或者更好——在调试错误页面中显示它(它被称为“哎哟”之类的?) 谢谢;) 这不完全是个问题,这是您视图的编译版本 Laravel刀片系统将把所有视图和子视图编译成一个文件,如果您没有对它们进行任何更改,它将始终尝试使用编译后的版

当视图中出现错误时,L4显示一个不错的跟踪,但缓存的文件名: 打开:/var/www/webpage/app/storage/views/1154ef6ad153694fd0dbc90f28999013

如何在视图渲染期间缓存保存视图的路径/名称(在注释或其他内容中)? 或者更好——在调试错误页面中显示它(它被称为“哎哟”之类的?)


谢谢;)

这不完全是个问题,这是您视图的编译版本

Laravel刀片系统将把所有视图和子视图编译成一个文件,如果您没有对它们进行任何更改,它将始终尝试使用编译后的版本,以加快系统速度

有时很难知道我们的观点中有哪一个与这个错误有关。使用升华文本,我要做的是点击CTRL-P(windows)并粘贴已编译视图的编号(1154ef6ad153694fd0dbc90f28999013),它会立即将它带给我


当然,您不会对其进行任何更改。这只是一种查找视图的方法,这样您就可以找到真正的文件并修复它。如果您知道哪个文件有问题,您不必这样做,直接转到您的文件。

解决此问题的一种方法是在得到响应的部分中添加
html
注释(而不是
blade
注释,因为它们不会在编译视图中呈现)

@section('content)

<!-- FILE: app/views/main/index.blade.php -->

<Your Content Goes Here>

@stop
@节(“内容”)
@停止

此html注释将在视图的编译源代码中呈现。当然,您必须首先检查编译视图,以确定哪个视图是有问题的视图。但根据我的经验,这种方法几乎一直有效。

我创建了一个助手,检查您是在本地工作还是在开发模式下工作,然后输出一条HTML注释

{{ printViewComment('mockup/reports@content') }}

<!-- Template: mockup/reports@content -->
{{printViewComment('实体模型/reports@content') }}

我选择将注释命名为path.file_name@yeild_name但我只希望这是一个自动功能。

我在查找源代码后找到了答案,
当你叫喊的时候!第页,只需在侧边栏中查找render,就会有视图文件的名称…

我不知道如何对视图名称进行反加密,但有一种方法是

{{dd('will you reach here ')}}
尝试将这一行从视图移动到另一个视图,以观察php渲染的范围


我知道这不是正确的方法,也不是专业的方法,但在某些情况下可能会有所帮助。

这是一个小问题,因为我不需要CTRL-p带来的编译视图,您可以在原始视图文件中进行修复,但不会对其进行任何更改。这只是一种查找视图的方法,这样您就可以找到真正的文件并修复它。如果您知道哪个文件是有问题的,您不必这样做,直接转到您的文件。您知道没有简单的方法可以找到原始视图文件吗?我需要搜索具有类似文本的文件,比如:find-xdev-type f-print0 | xargs-0 grep-H“一些文件内容”这应该是可以接受的答案。行号对应于已编译的视图,而不是刀片模板。好吧,这是一个对我来说很好的快速解决方法,谢谢=)但是我会将其包装为类似于
@if(env('APP_DEBUG')==1)@endif
。尽管文件名不是敏感信息,但最好不要向最终用户泄露任何调试信息。我同意@Fx32。
显示编译后的文件名,而不是源代码谢谢。还有一个更烦人的问题,当view eval中出现错误时,我们会得到一个空白页,而不是指向出错行的指针。。。