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

问题描述 投票:29回答:5

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

我能错过什么?

php debugging laravel laravel-4 phpstorm
5个回答
63
投票

放一个

<?php xdebug_break(); ?>

进入你的刀片文件工作得很好。即使在我的测试中,PHPstorm在某些情况下会跳转到下一个PHP语句。

为什么这样有效:

Laravel将刀片文件处理为缓存文件夹中的普通PHP文件。但PHP语句xdebug_break();将被转移到那里并导致程序停止在你想要它的位置(在缓存文件中)。


3
投票

要关闭这个问题 - 目前phpstorm不支持​​此功能。由jetbrains支持提供的解决方法是在IDE设置中将* .blade.php添加到PHP下的文件类型关联,但是,在执行此操作后它仍然不适合我。

看来他们根据我的要求创建了一张跟踪票,如果你想鼓励喷气机队就此工作请注意:qazxsw poi


2
投票

即使您可以让IDE在刀片文件上启用断点,它也无法工作 - Laravel从Blade文件中编写一个PHP文件 - 这个文件最终在脚本运行时使用 - 而不是Blade文件。

解决方法

这适用于PHPStorm - 但在其他IDE中可能有类似的东西。

Laravel(5)将组合文件存储在storage / framework / views下。这些文件具有随机生成的文件名 - 因此找到所需文件可能很棘手。一种简单的方法是删除所有这些临时文件,然后刷新要调试的页面。将创建一个新文件。在PHPstorm中,您可以右键单击该文件并选择文件的扩展名类型。 (不确定其他IDE)

您现在可以设置断点。显然,您需要在Blade文件中进行更改 - 但这至少可以帮助您找出问题所在。

**更新:Alex的解决方案更容易! **


1
投票

与最近的PHPstorm和Laravel 5.8一样,这应该可以立即使用。

youtrack.jetbrains.com/issue/WI-26476


0
投票

我设计了一个更好的黑客,它允许条件调试支持,这样你就不会在XDebug_break中度过余生了。

单行扩展如下。

https://laravel-news.com/laravel-5-8-blade-template-file-path

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

  1. 由于刀片文件没有使用指令,因此方法名称\ app \ utils \ DebugLogger :: EnableForBlades是完全限定的。
  2. 由于刀片文件似乎缺乏对通常的代码阻塞机制的支持,因此单行语句没有大括号,并以分号结束。

EnableForBlades是一个静态方法,用于查询环境变量(在.local.env中定义的变量之一),如果该变量的计算结果为True,则返回True。否则,它返回False,并禁止xdebug_break。

© www.soinside.com 2019 - 2024. All rights reserved.