it-swarm.com.de

PHPstorm - Haltepunkte können nicht in Blade.php-Dateien gesetzt werden

Ich arbeite an einer Laravel -Anwendung und kann meine Controller-PHP-Dateien einwandfrei debuggen, aber ich möchte auch die blade.php-Dateien debuggen. Bei meinem aktuellen Setup habe ich alle Jetbrains-Einstellungen für Laravel empfohlen, ( https://confluence.jetbrains.com/display/PhpStorm/Laravel+Development+using+PhpStorm#LaravelDevelopment usingPhpStorm-DebuggingLaravelApplicationswithPhpStorm ) So kann ich Haltepunkte in den Dateien blade.php festlegen. 

Was könnte ich vermissen?

26
Don F

Putting a

<?php xdebug_break(); ?>

in Ihrer Blade-Datei funktioniert das ziemlich gut. Selbst in meinen Tests springt PHPstorm in einigen Fällen zur nächsten PHP -Anweisung.

Warum das funktioniert:

Laravel verarbeitet die Blade-Datei in eine normale PHP -Datei im Cache-Ordner. Die PHP-Anweisung xdebug_break(); wird jedoch dorthin übertragen und bewirkt, dass das Programm an der gewünschten Position (in der Cachedatei) anhält.

58
Alex

Um diese Frage zu schließen, unterstützt phpstorm diese Funktion derzeit nicht. Eine von Jetbrains Support bereitgestellte Problemumgehung bestand im Hinzufügen von * .blade.php zu den Dateitypzuordnungen unter PHP in den IDE -Einstellungen. Nach diesem Vorgang funktionierte es jedoch immer noch nicht für mich. 

Es scheint, dass sie als Antwort auf meine Anfrage ein Youtrack-Ticket erstellt haben, wenn Sie Jetbrains dazu ermutigen möchten, daran zu arbeiten: youtrack.jetbrains.com/issue/WI-26476

3
Don F

Selbst wenn Sie das IDE zum Aktivieren von Haltepunkten in den Blade-Dateien erhalten können, funktioniert es nicht. Laravel erstellt eine PHP -Datei aus der Blade-Datei - it ist diese Datei, die schließlich verwendet wird, wenn das Skript ausgeführt wird - nicht die Blade-Datei.

Ein Work-Around

Dies funktioniert für PHPStorm - in anderen IDEs ist jedoch möglicherweise etwas Ähnliches möglich.

Laravel (5) speichert die zusammengestellten Dateien unter Speicher/Rahmen/Ansichten. Diese Dateien haben zufällig generierte Dateinamen - daher kann es schwierig sein, die gewünschte Datei zu finden. Ein einfacher Weg ist es Löschen Sie alle diese temporären Dateien und aktualisieren Sie dann die Seite, die Sie debuggen möchten. Eine neue Datei wird erstellt. In PHPstorm können Sie mit der rechten Maustaste auf die Datei klicken und den Erweiterungstyp der Datei auswählen. (Nicht sicher über andere IDEs)

Sie können jetzt Haltepunkte setzen. Natürlich müssen Sie die Änderungen in der Blade-Datei vornehmen - aber dies hilft Ihnen zumindest, herauszufinden, was falsch ist.

** Update: Alex 'Lösung ist einfacher! **

2
HPage

Ich habe mir einen noch besseren Hack ausgedacht, der bedingte Debugging-Unterstützung ermöglicht, sodass Sie für den Rest der Ewigkeit nicht mit XDebug_break hängen bleiben.

Die einzelne Zeile wird wie folgt erweitert.

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

Diese Aussage weist einige ungewöhnliche Merkmale auf.

  1. Da Blade-Dateien keine Direktiven enthalten, ist der Methodenname\app\utils\DebugLogger :: EnableForBlades vollständig qualifiziert.
  2. Da die Blade-Dateien scheinbar keine Unterstützung für den üblichen Codeblockierungsmechanismus bieten, enthält die einzeilige Anweisung keine geschweiften Klammern und wird durch ein Semikolon abgeschlossen.

EnableForBlades ist eine statische Methode, die eine Umgebungsvariable (eine der in .local.env definierten) abfragt und True zurückgibt, wenn diese Variable als True ausgewertet wird. Andernfalls wird False zurückgegeben und xdebug_break wird unterdrückt.

0
David A. Gray

Wie bei dem letzten PHPstorm und Laravel 5.8 sollte dies nun sofort funktionieren.

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

0
Alex