web-dev-qa-db-ja.com

PHPstorm-b​​lade.phpファイルにブレークポイントを設定できません

私はLaravelアプリケーションで作業しており、コントローラーのphpファイルをうまくデバッグできますが、blade.phpファイルもデバッグしたいと思います。現在のセットアップでは、Iveはすべてのジェットブレーンの推奨設定に従ってLaravel、( https://confluence.jetbrains.com/display/PhpStorm/Laravel+Development+using+PhpStorm#LaravelDevelopmentusingPhpStorm-DebuggingLaravelApplicationswithPhpStorm )ですが、ブレードにブレークポイントを設定できません。 phpファイル。

何が欠けているのでしょうか?

33
Don F

置く

_<?php xdebug_break(); ?>
_

あなたのブレードファイルにかなりうまくいきます。私のテストでも、PHPstormは次のPHP=ステートメントにジャンプする場合があります。

これが機能する理由:

Laravelはブレードファイルを通常のPHPキャッシュフォルダー内のファイルに処理します。ただし、PHPステートメントxdebug_break();がそこに転送され、 (キャッシュファイル内の)希望する位置で停止するプログラム。

63
Alex

この質問を閉じるには-現在、phpstormはこの機能をサポートしていません。 jetbrainsサポートによって提供される回避策は、*。blade.phpをPHP IDE設定内のファイルタイプの関連付けに追加することですが、それでも機能しませんでした。これをした後の私にとって。

私のリクエストに応じて、彼らがyoutrackチケットを作成したようです。ジェットブレインがこれに取り組むよう奨励したい場合は、賛成投票してください: youtrack.jetbrains.com/issue/WI-26476

3
Don F

IDEを取得してブレードファイルでブレークポイントを有効にできても、動作しません-LaravelはブレードファイルからPHPファイルを作成します-それはこのファイルは、スクリプトの実行時に最終的に使用されるファイルであり、Bladeファイルではありません。

回避策

これはPHPStormで機能しますが、他のIDEでも同様のことが可能になる場合があります。

Laravel(5)は、構成されたファイルをstorage/framework/viewsに保存します。これらのファイルにはランダムに生成されたファイル名があるため、必要なファイルを見つけるのが難しい場合があります。簡単な方法は、これらの一時ファイルをすべて削除してから、デバッグするページを更新することです。新しいファイルが作成されます。 PHPstormでは、ファイルを右クリックして、ファイルの拡張子タイプを選択できます。 (他のIDEについては不明)

これで、ブレークポイントを設定できるようになります。明らかに、Bladeファイルに変更を加える必要がありますが、これは少なくとも何が問題なのかを理解するのに役立ちます。

**更新:Alexのソリューションはより簡単です! **

2
HPage

最近のPHPstormとLaravel= 5.8と同様に、これはすぐに動作するはずです。

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

1
Alex

条件付きデバッグのサポートを可能にするさらに優れたハックを考案しました。これにより、残りの部分でXDebug_breakに悩まされることがなくなります。

単一行は次のように拡張されます。

<?php if ( \app\utils\DebugLogger::EnableForBlades ( ) ) xdebug_break ( ) ; ?>

このステートメントには、いくつかの変わった機能があります。

  1. ブレードファイルにはuseディレクティブがないため、メソッド名\ app\utils\DebugLogger :: EnableForBladesは完全修飾されています。
  2. ブレードファイルは通常のコードブロックメカニズムをサポートしていないように見えるため、1行のステートメントには中括弧がなく、セミコロンで終了しています。

EnableForBladesは、環境変数(.local.envで定義されているものの1つ)をクエリする静的メソッドであり、その変数がTrueと評価された場合にTrueを返します。それ以外の場合は、Falseを返し、xdebug_breakは抑制されます。

0
David A. Gray