Подтвердить что ты не робот

PHPstorm - невозможно установить контрольные точки в файлах blade.php

Я работаю над приложением Laravel и могу отлично отлаживать мои файлы php файлов контроллера, но Id нравится также отлаживать файлы blade.php. С моей текущей настройкой Ive следовали всем реактивным мозгам, рекомендуя настройки для Laravel, (http://bit.ly/1B64Dgx), но по-прежнему не позволяет устанавливать контрольные точки в файлах blade.php.

Любые идеи о том, чего я не могу потерять?

Спасибо,

Дон

4b9b3361

Ответ 1

Поместите

<?php xdebug_break(); ?>

в файл вашего лезвия работает очень хорошо. Даже в моих тестах PHPstorm в некоторых случаях переходит к следующей инструкции PHP.

Почему это работает:

Laravel обрабатывает файл клинка обычным файлом PHP в папке с кешем. Но инструкция PHP xdebug_break(); будет там перенесена и заставит программу остановиться в той позиции, в которой вы хотите (в файле кеша).

Ответ 2

Чтобы закрыть этот вопрос, phpstorm не поддерживает эту функцию на данный момент. Работа, поддерживаемая поддержкой jetbrains, заключалась в том, чтобы добавить *.blade.php к ассоциациям типов файлов под PHP в настройках IDE, однако он все равно не работал у меня после этого.

Похоже, что они создали билет на youtrack в ответ на мой запрос, если вам нравится поощрять jetbrains работать над этим, пожалуйста, повысьте: youtrack.jetbrains.com/issue/WI-26476

Ответ 3

Даже если вы можете заставить IDE включить точки останова в файлах blade файлов, это не сработает - Laravel составляет файл PHP из файла Blade - именно этот файл в конечном итоге используется при запуске script а не файл Blade.

Работающий

Это работает для PHPStorm, но что-то подобное возможно в других IDE.

Laravel (5) хранит собранные файлы в области хранения/рамки/представления. Эти файлы имеют случайные сгенерированные имена файлов, поэтому может оказаться сложным найти нужный файл. Легкий способ - удалить все эти временные файлы, а затем обновить страницу, которую вы хотите отлаживать. Будет создан новый файл. В PHPstorm вы можете щелкнуть правой кнопкой мыши по файлу и выбрать тип расширения файла. (Не уверен относительно других IDE)

Теперь вы сможете установить точки останова. Очевидно, вам нужно будет внести изменения в файл Blade, но это, по крайней мере, поможет вам понять, что не так.

** Обновление: решение Alex проще! **

Ответ 4

Я разработал еще лучший хак, который позволяет условно отлаживать поддержку, так что вы не застряли с XDebug_break на всю оставшуюся вечность.

Одна строка расширяется следующим образом.

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

У этого оператора есть несколько необычных функций.

  • Поскольку в файлах с лезвиями нет директив использования, имя метода, \app\utils\DebugLogger:: EnableForBlades полностью соответствует требованиям.
  • Поскольку в файлах с лезвиями отсутствует поддержка обычного механизма блокировки кода, однострочный оператор лишен скобок и завершается точкой с запятой.

EnableForBlades - это статический метод, который запрашивает переменную среды (одну из тех, которая определена в .local.env), возвращая значение True, если эта переменная имеет значение True. В противном случае он возвращает False, а xdebug_break подавляется.