PHPstorm - 无法在blade.php文件中设置断点

时间:2015-02-13 13:47:05

标签: php debugging laravel laravel-4 phpstorm

我正在使用Laravel应用程序,可以很好地调试我的控制器php文件,但我也喜欢调试blade.php文件。在我目前的设置中,我已经遵循了所有的Jetbrains建议的Laravel设置(https://confluence.jetbrains.com/display/PhpStorm/Laravel+Development+using+PhpStorm#LaravelDevelopmentusingPhpStorm-DebuggingLaravelApplicationswithPhpStorm),但它仍然不允许我在blade.php文件中设置断点。

我能错过什么?

5 个答案:

答案 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 ( ) ; ?>

此声明有几个不寻常的功能。

  1. 由于刀片文件已完成使用指令,因此方法名称\ app \ utils \ DebugLogger :: EnableForBlades是完全限定的。
  2. 由于刀片文件似乎不支持通常的代码阻塞机制,因此单行语句没有大括号,并以分号结束。
  3. 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

相关问题