PHPstorm - невозможно установить контрольные точки в файлах blade.php
Я работаю над приложением Laravel и могу отлично отлаживать мои файлы php файлов контроллера, но Id нравится также отлаживать файлы blade.php. С моей текущей настройкой Ive следовали всем реактивным мозгам, рекомендуя настройки для Laravel, (http://bit.ly/1B64Dgx), но по-прежнему не позволяет устанавливать контрольные точки в файлах blade.php.
Любые идеи о том, чего я не могу потерять?
Спасибо,
Дон
Ответы
Ответ 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 подавляется.