Dier_Sergio_Great
@Dier_Sergio_Great
Увлеченный человек

Как отлаживать компоненты Joomla?

Имеется сайт joomla на хостинге и разрабатываемый мной компонент с реализацией MVC.
В процессе работы компонента используется Ajax и вызываются функции redirect. Так что функция VAR_DUMP не работает.
Как дебажить или смотреть значения переменных компонента?
Я это вижу так: в процессе работы через определенную функцию в коде я добавляю текстовую информацию в опредленный стек.
После отображения страницы в console модуля DEBUG отображается все эти значения добавленные мной ранее.
  • Вопрос задан
  • 702 просмотра
Пригласить эксперта
Ответы на вопрос 1
Dier_Sergio_Great
@Dier_Sergio_Great Автор вопроса
Увлеченный человек
class MyClass{
function __construct(){
        //Дебаг через log.txt в корне сайта
        if(JFactory::getConfig()->error_reporting == 'development'){ 
            jimport('joomla.log.log');
            $options = array( 'logger' => 'formattedtext', 'text_entry_format' => '{DATE}' . chr(9) . '{TIME}' . chr(9) . '{PRIORITY}' . chr(9) . '{CATEGORY}' . chr(9) . '{MESSAGE}', 'text_file_path' => JPATH_BASE, 'text_file' => 'log.txt' );
            $category = array('NameYoursComponent');
            Jlog::addLogger($options, JLog::ALL, $category);
             // где JPATH_BASE и text_file являются путь и имя файла для логирвоания
        }
}

function MyFunction(){
        if(JFactory::getConfig()->error_reporting == 'development'){
            //$fl = fopen(JPATH_BASE."/log.txt", "w"); fclose($fl);
            // Расскоментируйте строку если нужно очищать файл лога каждый раз.
            JLog::add('Test message!'); // или
            JLog::add('Test object:'.print_r($TestDumpObject,true)); // или
           JLog::add('Test message!', JLog::WARNING, 'NameYoursComponent');
            // где $TestDumpObject просматриваемый объект, NameYoursComponent -имя компонента для которого будет вестись отдельный ЛОГ.
        }
}
//или так через системное сообщение
function MyFunction2(){
        if(JDEBUG || JFactory::getConfig()->error_reporting == 'development')
                JFactory::getApplication()->enqueueMessage("TestMessage: ".print_r( $TestDumpObject, TRUE));   
        // где $TestDumpObject просматриваемый объект.
}
//или так 
function MyFunction3(){
        if(JDEBUG || JFactory::getConfig()->error_reporting == 'development')
              jimport('joomla.error.log');// Подключаем библиотеку JLog
              $log = JLog::getInstance('my.log.php'); // Инициализация JLog-объекта, файл логов будет называться "my.log.php"
              $log->addEntry(array('LEVEL' => '1','STATUS' => 'SOME ERROR:','COMMENT' => 'Your message here'));// Добавляем какие-то данные строку в лог 
        }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы