Дебаггер для Yii 1.1 портированный из Yii 2

Выкладываем свои наработки
Аватара пользователя
KiTE
Сообщения: 112
Зарегистрирован: 2012.04.12, 14:47

Re: Дебаггер для Yii 1.1 портированный из Yii 2

Сообщение KiTE »

Не вижу проблем в том, чтобы открывать ссылки на отладочную инфу в отдельной вкладке.
Делать это по умолчанию - спорный вопрос. Мне, субъективно, никогда не нравилось если страница сама принимает решение делать переход в ту-же вкладку или в отдельную.
Модальное окно - еще один спорный вопрос. Модуль просмотра максимально изолирован от стилей и скриптов фронтэнда, и это не мешает смотреть и post и ajax.

HQ0
Сообщения: 182
Зарегистрирован: 2012.10.17, 17:21

Re: Дебаггер для Yii 1.1 портированный из Yii 2

Сообщение HQ0 »

Захотел в Action добавить еще и модуль, если я в нем.

panels/Yii2RequestPanel.php:114

Было

Код: Выделить всё

  $action = get_class($controller) . '::action' . ucfirst($actionID) . '()';
 

Стало

Код: Выделить всё

  $action = ( isset($controller->module->id)?$controller->module->id . ' @ ' : '' ) . get_class($controller) . '::action' . ucfirst($actionID) . '()';
 

Аватара пользователя
howard
Сообщения: 528
Зарегистрирован: 2012.11.16, 18:55
Откуда: Україна, Вінниця

Re: Дебаггер для Yii 1.1 портированный из Yii 2

Сообщение howard »

При использовании вместе с мультиязычностью http://www.yiiframework.com/wiki/294/se ... dget-i18n/ вываливается с ошибкой:
Cannot modify header information - headers already sent by (output started at ...\...\...\core\web\CController.php:793)

...\...\...\core\web\CHttpRequest.php(1187)
1175 setcookie($cookie->name,$value,$cookie->expire,$cookie->path,$cookie->domain,$cookie->secure,$cookie->httpOnly);
1176 else
1177 setcookie($cookie->name,$value,$cookie->expire,$cookie->path,$cookie->domain,$cookie->secure);
1178 }
1179
1180 /**
1181 * Deletes a cookie.
1182 * @param CHttpCookie $cookie cookie to be deleted
1183 */
1184 protected function removeCookie($cookie)
1185 {
1186 if(version_compare(PHP_VERSION,'5.2.0','>='))
1187 setcookie($cookie->name,'',0,$cookie->path,$cookie->domain,$cookie->secure,$cookie->httpOnly);
1188 else
1189 setcookie($cookie->name,'',0,$cookie->path,$cookie->domain,$cookie->secure);
1190 }
1191 }
...\...\...\protected\components\Controller.php(42): CMap->offsetSet("language", CHttpCookie)
37 Yii::app()->language = $_GET['language'];
38 Yii::app()->user->setState('language', $_GET['language']);
39 $cookie = new CHttpCookie('language', $_GET['language']);
40 $cookie->expire = time() + (60*60*24*365); // (1 year)
41 #if(!isset(Yii::app()->request->cookies['language']))
42 Yii::app()->request->cookies['language'] = $cookie;
43 }
44 else if (Yii::app()->user->hasState('language'))
45 Yii::app()->language = Yii::app()->user->getState('language');
46 else if(isset(Yii::app()->request->cookies['language']))
47 Yii::app()->language = Yii::app()->request->cookies['language']->value;
Агрегатор цен на услуги хостинга - https://hostcost.net

Аватара пользователя
KiTE
Сообщения: 112
Зарегистрирован: 2012.04.12, 14:47

Re: Дебаггер для Yii 1.1 портированный из Yii 2

Сообщение KiTE »

Спасибо за отчет. Будет время, попробую воспроизвести.

pogranecua
Сообщения: 9
Зарегистрирован: 2013.05.07, 12:57

Re: Дебаггер для Yii 1.1 портированный из Yii 2

Сообщение pogranecua »

Спасибо!
Дай глазам отдохнуть
http://releyes.com

Аватара пользователя
zolton007
Сообщения: 180
Зарегистрирован: 2013.08.16, 08:43
Откуда: Воронеж

Re: Дебаггер для Yii 1.1 портированный из Yii 2

Сообщение zolton007 »

Спасибо большое! Классная штука!
ps
mixa писал(а):
Sam Dark писал(а):По дебаггеру в Yii2 есть пожелания?
Единственное что не нашел, это подробной информации о view/layout. В YiiDebugToolbar есть такое и достаточно часто используют верстальщики, чтобы найти где верстать.
+1, действительно было бы круто

Аватара пользователя
anton44eg
Сообщения: 2716
Зарегистрирован: 2012.01.25, 13:37
Откуда: Киев

Re: Дебаггер для Yii 1.1 портированный из Yii 2

Сообщение anton44eg »

Уже протестировал explain - замечательно, спасибо! :)

Аватара пользователя
KiTE
Сообщения: 112
Зарегистрирован: 2012.04.12, 14:47

Re: Дебаггер для Yii 1.1 портированный из Yii 2

Сообщение KiTE »

Спасибо за отзывы.

Что касается explain, сейчас он доступен только для MySQL и SQLite. Подключение к другим СУБД сделать не проблематично, но мне проверить негде.
Если кто использует в своих проектах подключение к PostgreSQL, MS SQL или Oracle, буду благодарен за информацию. Интересуют форматы команд explain для этих СУБД, примеры выдачи, и последующее тестирование. Тикет на github.
Единственное что не нашел, это подробной информации о view/layout
Планирую сделать.

Аватара пользователя
samdark
Администратор
Сообщения: 9352
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Дебаггер для Yii 1.1 портированный из Yii 2

Сообщение samdark »

KiTE, а можно будет хорошо показавшие себя штуки в виде pull-request-а включить в Yii2?

Аватара пользователя
KiTE
Сообщения: 112
Зарегистрирован: 2012.04.12, 14:47

Re: Дебаггер для Yii 1.1 портированный из Yii 2

Сообщение KiTE »

Да, буду рад помочь.
Но есть проблема, я плохо владею английским, и не смогу нормально задокументировать код. А безграмотно писать не хочется.

Аватара пользователя
samdark
Администратор
Сообщения: 9352
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Дебаггер для Yii 1.1 портированный из Yii 2

Сообщение samdark »

Я допилю.

poohbinar
Сообщения: 28
Зарегистрирован: 2012.12.26, 16:58

Re: Дебаггер для Yii 1.1 портированный из Yii 2

Сообщение poohbinar »

howard писал(а):При использовании вместе с мультиязычностью http://www.yiiframework.com/wiki/294/se ... dget-i18n/ вываливается с ошибкой:
Cannot modify header information - headers already sent by (output started at ...\...\...\core\web\CController.php:793)

...\...\...\core\web\CHttpRequest.php(1187)
1175 setcookie($cookie->name,$value,$cookie->expire,$cookie->path,$cookie->domain,$cookie->secure,$cookie->httpOnly);
1176 else
1177 setcookie($cookie->name,$value,$cookie->expire,$cookie->path,$cookie->domain,$cookie->secure);
1178 }
1179
1180 /**
1181 * Deletes a cookie.
1182 * @param CHttpCookie $cookie cookie to be deleted
1183 */
1184 protected function removeCookie($cookie)
1185 {
1186 if(version_compare(PHP_VERSION,'5.2.0','>='))
1187 setcookie($cookie->name,'',0,$cookie->path,$cookie->domain,$cookie->secure,$cookie->httpOnly);
1188 else
1189 setcookie($cookie->name,'',0,$cookie->path,$cookie->domain,$cookie->secure);
1190 }
1191 }
...\...\...\protected\components\Controller.php(42): CMap->offsetSet("language", CHttpCookie)
37 Yii::app()->language = $_GET['language'];
38 Yii::app()->user->setState('language', $_GET['language']);
39 $cookie = new CHttpCookie('language', $_GET['language']);
40 $cookie->expire = time() + (60*60*24*365); // (1 year)
41 #if(!isset(Yii::app()->request->cookies['language']))
42 Yii::app()->request->cookies['language'] = $cookie;
43 }
44 else if (Yii::app()->user->hasState('language'))
45 Yii::app()->language = Yii::app()->user->getState('language');
46 else if(isset(Yii::app()->request->cookies['language']))
47 Yii::app()->language = Yii::app()->request->cookies['language']->value;


У меня такая же проблема Изображение

poohbinar
Сообщения: 28
Зарегистрирован: 2012.12.26, 16:58

Re: Дебаггер для Yii 1.1 портированный из Yii 2

Сообщение poohbinar »

Запускается если убрать /ru/ (например) из адресной строки, тогда запускается все


poohbinar
Сообщения: 28
Зарегистрирован: 2012.12.26, 16:58

Re: Дебаггер для Yii 1.1 портированный из Yii 2

Сообщение poohbinar »

KiTE писал(а):Пофиксил.
Благодарю!

poohbinar
Сообщения: 28
Зарегистрирован: 2012.12.26, 16:58

Re: Дебаггер для Yii 1.1 портированный из Yii 2

Сообщение poohbinar »

Нашел еще багу
Изображение
Обработка запроса идет через errorHandler

Аватара пользователя
KiTE
Сообщения: 112
Зарегистрирован: 2012.04.12, 14:47

Re: Дебаггер для Yii 1.1 портированный из Yii 2

Сообщение KiTE »

В PHP < 5.4 с определением http-кода все сложно. Коды начиная с 400-го определяются путем перехвата CHttpExeption. Поэтому, если вы это исключение у себя в проекте экранируете, достоверной информации не будет. В README есть рецепт косвенного определения 302-го кода. Можно "поколдовать" с этой лямбдой в своем конфиге для индивидуальной совместимости с проектом.

Начиная с 5.4 доступна нативная функция http_response_code(), и расширение ее использует.

Vespertilio
Сообщения: 271
Зарегистрирован: 2012.11.30, 07:33

Re: Дебаггер для Yii 1.1 портированный из Yii 2

Сообщение Vespertilio »

У меня почему-то не работает. Ошибки не вываливает, просто плодит кучу DIV`ов куда вставляются зеркальные копии этой же страницы. Вот так это выглядит:
Изображение
конфиг:

Код: Выделить всё

<?php

// uncomment the following to define a path alias
// Yii::setPathOfAlias('local','path/to/local-folder');

// This is the main Web application configuration. Any writable
// CWebApplication properties can be configured here.
Yii::setPathOfAlias('bootstrap', dirname(__FILE__).'/../extensions/bootstrap');

return array(
    'theme'=>'bootstrap',
    'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',
    'name'=>'MWO [HIVE] Internal ToolKit',

    // preloading 'log' component
    'preload'=>array(
        'log',
        'debug',
    ),

    // autoloading model and component classes
    'import'=>array(
        'application.models.*',
        'application.components.*',
    ),

    'modules'=>array(
        // uncomment the following to enable the Gii tool
        
        'gii'=>array(
            'class'=>'system.gii.GiiModule',
            'password'=>'server',
            // If removed, Gii defaults to localhost only. Edit carefully to taste.
            //'ipFilters'=>array('127.0.0.1','::1'),
            'generatorPaths'=>array(
                'bootstrap.gii',
            ),
        ),
    ),

    // application components
    'components'=>array(
        'debug'=>array(
            'class'=>'ext.yii2-debug.Yii2Debug',
            'allowedIPs'=>array('127.0.0.1','::1'),
            'enabled'=>true,
            'highlightCode'=>true,
        ),
        'bootstrap'=>array(
            'class'=>'bootstrap.components.Bootstrap',
        ),
        'user'=>array(
            // enable cookie-based authentication
            'allowAutoLogin'=>true,
        ),
        // uncomment the following to enable URLs in path-format
        /*
        'urlManager'=>array(
            'urlFormat'=>'path',
            'rules'=>array(
                '<controller:\w+>/<id:\d+>'=>'<controller>/view',
                '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
                '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
            ),
        ),
        */
        /*
        'db'=>array(
            'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/testdrive.db',
        ),
        */
        // uncomment the following to use a MySQL database
        
    'db'=>array(
        'connectionString' => 'mysql:host=***;dbname=***',
        'emulatePrepare' => true,
        'username' => '***',
        'password' => '****',
        'charset' => 'utf8',
        'enableProfiling' => true,
        'enableParamLogging' => true,
    ),
        'errorHandler'=>array(
            // use 'site/error' action to display errors
            'errorAction'=>'site/error',
        ),
        'log'=>array(
            'class'=>'CLogRouter',
            'routes'=>array(
                array(
                    'class'=>'CFileLogRoute',
                    'levels'=>'error, warning',
                ),
                // uncomment the following to show log messages on web pages
                
                /*array(
                    'class'=>'CWebLogRoute',
                ),*/
                
            ),
        ),
    ),

    // application-level parameters that can be accessed
    // using Yii::app()->params['paramName']
    'params'=>array(
        // this is used in contact page
        'adminEmail'=>'webmaster@example.com',
    ),
);

Аватара пользователя
KiTE
Сообщения: 112
Зарегистрирован: 2012.04.12, 14:47

Re: Дебаггер для Yii 1.1 портированный из Yii 2

Сообщение KiTE »

Похожий вопрос подымался на github. Баг еще не выявлен, проблема не решена.
Автор вопроса пишет что в версии от 2013-09-07 все работало нормально. Попробуйте на своем проекте эту версию.
Если у вас та же ситуация, было бы неплохо, если бы вы попробовали локализовать баг самостоятельно.
Я бы действовал методом исключения, накатывая и проверяя новые коммиты по очереди. Так станет понятно какое именно изменение стало причиной бага.
Если будет известна причина, можно будет найти решение.


Ответить