Дебаггер для Yii 1.1 портированный из Yii 2
Re: Дебаггер для Yii 1.1 портированный из Yii 2
Немного не по теме вопрос, на некоторых моих сайтах после установки расширения xdebug для php 5.3 появилась ошибка Maximum function nesting level of '100' reached, aborting! И мне пришлось записать в php.ini xdebug.max_nesting_level = 100000
Цифра такая 100000 как то пугает... главное большинству сайтов хватило дефолтного значения 100, нескольким 1000, а один перестал выдавать ошибку только при 100000. Гуру подскажите пожалуйста почему так и о чем это вообще говорит...
Цифра такая 100000 как то пугает... главное большинству сайтов хватило дефолтного значения 100, нескольким 1000, а один перестал выдавать ошибку только при 100000. Гуру подскажите пожалуйста почему так и о чем это вообще говорит...
Re: Дебаггер для Yii 1.1 портированный из Yii 2
В общем отрубил его... не нужен он на продакшене:)
Re: Дебаггер для Yii 1.1 портированный из Yii 2
День добрый.
Пытаюсь добавить свою панель, которая выводит SEO инфу, такую как pageTitle + дополнительные переменные.
Получаю Yii::app()->controller и он отдает DefaultController.
Есть какой-то метод получить контроллер, который выполнился в данный момент? Посмотрел панель Yii2RequestPanel, так там контроллер и экшен создаются по реквест-объекту. В моем случае это не подходит.
Пытаюсь добавить свою панель, которая выводит SEO инфу, такую как pageTitle + дополнительные переменные.
Получаю Yii::app()->controller и он отдает DefaultController.
Есть какой-то метод получить контроллер, который выполнился в данный момент? Посмотрел панель Yii2RequestPanel, так там контроллер и экшен создаются по реквест-объекту. В моем случае это не подходит.
Re: Дебаггер для Yii 1.1 портированный из Yii 2
Yii::app()->controller это и есть контроллер который работает в данный момент. Если вы к нему обращаетесь из модуля, то он, естественно, вернет DefaultController. Суть дебаггера в том, что на рабочей странице сайта он сохраняет отладочную информацию, а на служебной странице модуля ее выводит.
Там похожая ситуация. Стандартным способом получить текущий контроллер не получится. Запись логов происходит в момент onEndRequest, когда объект контроллера уже уничтожен.Посмотрел панель Yii2RequestPanel, так там контроллер и экшен создаются по реквест-объекту. В моем случае это не подходит.
Re: Дебаггер для Yii 1.1 портированный из Yii 2
В тестовых целях добавил поле для сохранения ссылки на контроллер:
и далее в базовом контроллере
ну и само использование:
ИМХО не очень красивое решение. Как вариант думаю добавить метод для установки передачи данных в дебаг Yii::app()->debug->setData('name', $data),
т.к. сейчас как я понял их можно передать только через логгер Yii::log(serialize($data), CLogger::LEVEL_INFO, Yii2LogPanel::CATEGORY_DUMP);?
PS: И еще один момент, может не где не увидел в теме, но если в дебагере происходит ошибка, то панель дебагера просто не появляется, и нигде не могу её отследить, в логах тоже не нашел. Как его правильно отлаживать?
Код: Выделить всё
class Yii2Debug extends CApplicationComponent {
public $ctrl = null;
Код: Выделить всё
class Controller extends CController {
public function init() {
Yii::app()->debug->ctrl = Yii::app()->controller;
}
Код: Выделить всё
class SeoDebugPanel extends Yii2DebugPanel {
public function save() {
$controller = $this->getOwner()->ctrl;
return array(
'pageTitle' => $controller->pageTitle,
'pageDescription' => $controller->pageDescription,
'pageKeywords' => $controller->pageKeywords,
);
}
т.к. сейчас как я понял их можно передать только через логгер Yii::log(serialize($data), CLogger::LEVEL_INFO, Yii2LogPanel::CATEGORY_DUMP);?
PS: И еще один момент, может не где не увидел в теме, но если в дебагере происходит ошибка, то панель дебагера просто не появляется, и нигде не могу её отследить, в логах тоже не нашел. Как его правильно отлаживать?
Re: Дебаггер для Yii 1.1 портированный из Yii 2
В дебаггере не должно быть ошибок. Это залог его работоспособности.PS: И еще один момент, может не где не увидел в теме, но если в дебагере происходит ошибка, то панель дебагера просто не появляется, и нигде не могу её отследить, в логах тоже не нашел. Как его правильно отлаживать?
Если вы создаете новую панель, и в переопределенном save() возможно исключение, то такой кусок кода нужно экранировать.
-
- Сообщения: 77
- Зарегистрирован: 2012.07.19, 21:34
Re: Дебаггер для Yii 1.1 портированный из Yii 2
я был каким то образом сделал что бы кликабельные были места с ошибками в табе Log . Нажал на на ошибку на каком то файле что указан в логе и тебе сразу открылся бы он например (phpstorm, netbean ....) ...Правда я даже не представляю это вообще возможно или нет ..
Re: Дебаггер для Yii 1.1 портированный из Yii 2
В стандартной ситуации это невозможно.
Из соображений безопасности, веб-страница открытая в браузере ничего не знает о приложениях запущенных на вашем компьютере. А PHPStorm с NetBeans не создают протоколов как у скайпа, который можно использовать в url.
Максимум, можно вывести листинг кода с подсвеченной строкой. Но какой в этом смысл, когда, почти всегда, рядом открыта рабочая IDE, и тоже самое можно сделать парой хоткеев.
Из соображений безопасности, веб-страница открытая в браузере ничего не знает о приложениях запущенных на вашем компьютере. А PHPStorm с NetBeans не создают протоколов как у скайпа, который можно использовать в url.
Максимум, можно вывести листинг кода с подсвеченной строкой. Но какой в этом смысл, когда, почти всегда, рядом открыта рабочая IDE, и тоже самое можно сделать парой хоткеев.
-
- Сообщения: 77
- Зарегистрирован: 2012.07.19, 21:34
Re: Дебаггер для Yii 1.1 портированный из Yii 2
Скажите а это нормально что вот так ругается Firebug ?
SecurityError: The operation is insecure.
у меня на эту строку:
SecurityError: The operation is insecure.
у меня на эту строку:
Код: Выделить всё
if (window.localStorage && localStorage.getItem('yii2-debug-toolbar') == 'minimized') {
Код: Выделить всё
jQuery(function($) {
(function($){
$('<div>').appendTo('body').load('/debug/5338919d9c080/toolbar?language=en', function(){
if (window.localStorage && localStorage.getItem('yii2-debug-toolbar') == 'minimized') {
$('#yii2-debug-toolbar').hide();
$('#yii2-debug-toolbar-min').show();
} else {
$('#yii2-debug-toolbar-min').hide();
$('#yii2-debug-toolbar').show();
}
$('#yii2-debug-toolbar .yii2-debug-toolbar-toggler').click(function(){
$('#yii2-debug-toolbar').hide();
$('#yii2-debug-toolbar-min').show();
if (window.localStorage) {
localStorage.setItem('yii2-debug-toolbar', 'minimized');
}
});
$('#yii2-debug-toolbar-min .yii2-debug-toolbar-toggler').click(function(){
$('#yii2-debug-toolbar-min').hide();
$('#yii2-debug-toolbar').show();
if (window.localStorage) {
localStorage.setItem('yii2-debug-toolbar', 'maximized');
}
});
});
})(jQuery);