S
S
Sergey Korenevsky2016-01-26 14:32:33
PHP
Sergey Korenevsky, 2016-01-26 14:32:33

How to debug Joomla components?

There is a hosted joomla site and a component I am developing with an MVC implementation.
During component operation, Ajax is used and redirect functions are called. So the VAR_DUMP function doesn't work.
How to debug or view component variable values?
I see it this way: in the process of working through a certain function in the code, I add textual information to a certain stack.
After displaying the page in the console of the DEBUG module, all these values ​​\u200b\u200bthat I added earlier are displayed.

Answer the question

In order to leave comments, you need to log in

1 answer(s)
S
Sergey Korenevsky, 2016-02-14
@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'));// Добавляем какие-то данные строку в лог 
        }
}

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question