我正在使用Laravel应用程序,可以很好地调试我的控制器php文件,但我也喜欢调试blade.php文件。在我目前的设置中,我已经遵循了所有的Jetbrains建议的Laravel设置(https://confluence.jetbrains.com/display/PhpStorm/Laravel+Development+using+PhpStorm#LaravelDevelopmentusingPhpStorm-DebuggingLaravelApplicationswithPhpStorm),但它仍然不允许我在blade.php文件中设置断点。
我能错过什么?
答案 0 :(得分:60)
提出
<?php xdebug_break(); ?>
进入你的刀片文件效果很好。 即使在我的测试中,PHPstorm在某些情况下会跳转到下一个PHP语句。
为什么会这样:
Laravel将刀片文件处理为缓存文件夹中的普通PHP文件。但是PHP语句xdebug_break();
将被转移到那里并导致程序在你想要它的位置停止(在缓存文件中)。
答案 1 :(得分:3)
要关闭此问题 - 目前phpstorm不支持此功能。由jetbrains支持提供的解决方法是在IDE设置中将* .blade.php添加到PHP下的文件类型关联,但是,在执行此操作后它仍然不适合我。
看来他们根据我的要求创建了一张跟踪票,如果您想鼓励喷气机使用这种方式请注意:youtrack.jetbrains.com/issue/WI-26476
答案 2 :(得分:2)
即使您可以让IDE在刀片文件上启用断点,它也无法工作 - Laravel从Blade文件中编写一个PHP文件 - 这个文件最终在脚本运行时使用 - 而不是刀片文件。
解决方法
这适用于PHPStorm - 但在其他IDE中可能有类似的东西。
Laravel(5)将组合文件存储在storage / framework / views下。 这些文件具有随机生成的文件名 - 因此找到所需文件可能很棘手。 一种简单的方法是删除所有这些临时文件,然后刷新要调试的页面。将创建一个新文件。 在PHPstorm中,您可以右键单击该文件并选择文件的扩展名类型。 (不确定其他IDE)
您现在可以设置断点。显然你需要在Blade文件中进行更改 - 但这至少可以帮助你弄清楚出了什么问题。
**更新:Alex的解决方案更容易! **
答案 3 :(得分:0)
我设计了一个更好的黑客,它允许条件调试支持,这样你就不会在XDebug_break中度过余生。
单行扩展如下。
<?php if ( \app\utils\DebugLogger::EnableForBlades ( ) ) xdebug_break ( ) ; ?>
此声明有几个不寻常的功能。
EnableForBlades是一个静态方法,用于查询环境变量(在.local.env中定义的变量之一),如果该变量的计算结果为True,则返回True。否则,它返回False,并且xdebug_break被抑制。
答案 4 :(得分:0)
与最近的PHPstorm和Laravel 5.8一样,这应该立即可用。
https://laravel-news.com/laravel-5-8-blade-template-file-path