Отладка

Главные вкладки

Аватар пользователя Bochagov Bochagov 24 ноября 2010 в 19:07

Всем привет!

По данной теме поискал ответы на форуме, но так ничего толком и не нашёл, поэтому прошу направить в нужном направлении.

Разбираюсь с Drupal и пишу пробный модуль.

Установка модуля: файл module.install
Хочу сделать, чтобы при установки модуля, автоматически создавался новый пользователь.
Почитал книжку, статьи - алгоритм реализации ясен, начал писать код и ...

Вот тут и встал. Никакого отладочного механизма.
Я даже и не могу толком понять, запускается моя функция или нет.
Создал файл в папке с модулем - название_модуля.install
в нём объявил функцию

название_модуля_install(){}

Для начала хотелось бы вообще увидеть отклик это функции, т.е. использовать какой-нибудь отладчик

Поискал на форуме решения. Из того что нашёл:
1. drupal_set_message('Install function!');
никакой реакции...
2. watchdog() - пишет в логи. Но к сожалению документация по данной функции оставляет желать лучшего - вот она
И где расположен этот файл?

3. Написал свою функцию записи в лог. (тут оговорюсь, с php столкнулся лишь недавно)
тестировал на "не Drupal" сайте, т.е. просто запускал скрипт - всё работает. Скопировал функцию в файл module.install - никакой реакции. Что опять наводит на мысли, что drupal туда и не заходит, но сказать наверняка опять же нельзя... в общем я запутался... помогите!

Вот функция записи:

<?php
function my_print($string)
{    
    
$fp fopen('c:\\debug.txt''a');    
    
fwrite($fp,"\r\n");
    
fwrite($fp$string);
    
fclose($fp);
}
?>

Комментарии

Аватар пользователя xxandeadxx xxandeadxx 10 ноября 2015 в 11:47

"Bochagov" wrote:
Но к сожалению документация по данной функции оставляет желать лучшего

что в ней непонятного? на той же странице есть 89 примеров как использовать эту функцию

Аватар пользователя Bochagov Bochagov 25 ноября 2010 в 10:20

Заработал watchdog, и, как я и предполагал, не вызывается функция module_install...
Скачал пример из книжки - там всё работает. Сделал всё тоже самое - у меня не работает.

функция выглядит вот так:

<?php
function newone_install() {
    
watchdog('content''Install func');
}
?>

Имена проверил ни один раз, функция newone_module() вызывается, выводится меню, форма настройки модуля описана в другом файле и тоже срабатывает. watchdog проверял именно в функции newone_module() - выполняется успешно, запись появляется.
А вот функции установки почему-то игнорируется
в чём может быть проблема?

Аватар пользователя Bochagov Bochagov 25 ноября 2010 в 12:25

Сам с собой тут веду беседу)))

В общем проблема частично решена, но вопрос отладки так и остаётся.
Функция install срабатывает, но только при первой установки (сам виноват - забыл...).

Но вопрос с отладкой не до конца прояснился. Выходит, чтобы отлаживать установщик модуля, надо каждый раз удалять строку моего модуля из таблицы systems. Это единственный вариант?

Аватар пользователя G.A. Vinogradov G.A. Vinogradov 25 ноября 2010 в 14:06

Bochagov wrote:

Но вопрос с отладкой не до конца прояснился. Выходит, чтобы отлаживать установщик модуля, надо каждый раз удалять строку моего модуля из таблицы systems. Это единственный вариант?

Нет конечно. Можно отладить функционал в другом месте, а потом поставить его в установщик, и проверить интеграцию. Ну, скажем сделать что-то вроде этого:

<?php
function module_perform_install_functions(){
    
// Here all we need
}

function 

module_install(){
    
module_perform_install_functions();
}

function 

module_debug(){
    
// Or even   module_install()
    
module_perform_install_functions();
}

function 

module_menu(){
    return array(
        
'module/debug' => array(
            
'title' => 'Module debug',
            
'page callback' => 'module_debug'          
        
)
    );
}
?>
Аватар пользователя xxandeadxx xxandeadxx 25 ноября 2010 в 13:59

"Bochagov" wrote:
Выходит, чтобы отлаживать установщик модуля, надо каждый раз удалять строку моего модуля из таблицы systems. Это единственный вариант?

devel - reinstall