Здравствуйте товарищи знатоки.
Собственно сабж:
Написал вот такое вот первое творение, вроде все по API да по правилам.
Да вот при установке попадаю на пустую страницу http://mysite.ru/admin/build/modules/list/confirm
и все.
Таблица в БД не создается, запись тем более не добавляется.
Если после "установки" перейти на http://mysite.ru/admin/build/modules/list/
То модуль "как бы установлен".
Что не так?
собственно код
sites\all\modules\jc_to_dvtrade_import\jc_to_dvtrade_import.info
name = JC to DVtrade import
description = "Модуль для импорта из БД JapanCar"
package = "DVtrade"
core = 6.x
sites\all\modules\jc_to_dvtrade_import\jc_to_dvtrade_import.install
//; $Id$
/**
* Реализация hook_schema()
*/
function jc_to_dvtrade_import_schema()
{
$schema['jc_to_dvtrade_import_jcsetup'] = array(
'fields' => array(
'parameter' => array(
'description' => 'Название опции',
'type' => 'varchar',
'length' => 100,
'not null' => true,
),
'value' => array(
'description' => 'Значение опции',
'type' => 'int',
'not null' => true,
),
),
'primary key' => array('parameter'),
);
return $schema;
}
/**
* Реализация hook_install()
*/
function jc_to_dvtrade_import_install()
{
drupal_install_schema('jc_to_dvtrade_import_jcsetup');
db_query("insert into {jc_to_dvtrade_import_jcsetup} (parameter, value) values (%s, %d)", "autoupdate", 1);
}
/**
* Реализация hook_uninstall()
*/
function jc_to_dvtrade_import_uninstall()
{
drupal_uninstall_schema('jc_to_dvtrade_import_jcsetup');
}
sites\all\modules\jc_to_dvtrade_import\jc_to_dvtrade_import.module
//; $Id$
в логах вот такая вот ошибка.
Тип php
Дата Понедельник, Март 14, 2011 - 13:54
Местоположение http://mysite.ru/admin/build/modules/list/confirm
Источник отсылки http://mysite.ru/admin/build/modules/list
Сообщение Cannot modify header information - headers already sent by (output started at Z:\home\mysite.ru\www\sites\all\modules\jc_to_dvtrade_import\jc_to_dvtrade_import.module:1) в файле Z:\home\mysite.ru\www\includes\common.inc в строке 345.
Важность ошибка
Имя хоста 127.0.0.1
Действия
Комментарии
Для varchar укажите длину
vadim_, указал длину - изменений не последовало
ну а в логах что пишет ?
в логах вот такая вот ошибка.
Тип php
Дата Понедельник, Март 14, 2011 - 13:54
Местоположение http://mysite.ru/admin/build/modules/list/confirm
Источник отсылки http://mysite.ru/admin/build/modules/list
Сообщение Cannot modify header information - headers already sent by (output started at Z:\home\mysite.ru\www\sites\all\modules\jc_to_dvtrade_import\jc_to_dvtrade_import.module:1) в файле Z:\home\mysite.ru\www\includes\common.inc в строке 345.
Важность ошибка
Имя хоста 127.0.0.1
Вот только не пойму почему.
кто то пытается отправить header, но так как произошол уже какойто вывод то его отправить нельзя
Вы уверены что ошибка изза вашего модуля?
Можете скинуть сюда свой модуль ?
сохраните все файлы модуля в кодировке UTF8 без BOM
Спасибо Ch (Файлы были просто в UTF-8, сохранил в UTF-8 без BOM) теперь установка проходит без ошибок - как обычно.
Но вот основную проблему это не решило - Таблица в БД не создается, запись не добавляется.
У меня в синтаксисе все правильно?
Кстати void89a, не совсем понял "Можете скинуть сюда свой модуль"? Я выложил все исходники в посте. в самом файле sites\all\modules\jc_to_dvtrade_import\jc_to_dvtrade_import.module
"ничего нет" если вы про это.
Убедитесь, что перед "<?php" у вас нет поблеов и переводов строк. Превым символом в файле должен быть "меньше".
UPD: ninja'd
Убедился - все правильно
jc_to_dvtrade_import.info
name = JC to DVtrade import
description = "Модуль для импорта из БД JapanCar"
project = "jc_to_dvtrade_import"
package = "DVtrade"
core = 6.x
jc_to_dvtrade_import.install
//; $Id$
/**
* Реализация hook_schema()
*/
function jc_to_dvtrade_import_schema()
{
$schema['jc_to_dvtrade_import_jcsetup'] = array(
'fields' => array(
'parameter' => array(
'description' => 'Название опции',
'type' => 'varchar',
'length' => 100,
'not null' => true,
),
'value' => array(
'description' => 'Значение опции',
'type' => 'int',
'not null' => true,
),
),
'primary key' => array('parameter'),
);
return $schema;
}
/**
* Реализация hook_install()
*/
function jc_to_dvtrade_import_install()
{
drupal_install_schema('jc_to_dvtrade_import');
db_query("insert into {jc_to_dvtrade_import_jcsetup} (parameter, value) values (%s, %d)", "autoupdate", 1);
}
/**
* Реализация hook_uninstall()
*/
function jc_to_dvtrade_import_uninstall()
{
drupal_uninstall_schema('jc_to_dvtrade_import');
}
теперь таблица создается
если вы хитите использовать эту таблицу для хранения настроек модуля то лучше воспользуйтесь variable_set
Так уверенно сказали. Я аж обрадовался. Но увы не создается. Кстати спасибо - понял ошибку.
Если не трудно - чем лучше?
Тем, что не надо создавать и держать в базе отдельную таблицу для хранения нескольких переменных. Для этого уже есть таблица variable.
Ясно - спасибо.
Но тема остается открытой. Почему же не работает этот код.
Попробуйте отключить модуль затем его УДАЛИТЬ (закладка Удалить), а потом обратно включить
Вы были правы. Я и забыл, что он считается установленным, а я его просто отключал. Ну простите чайника
Всех люблю
Спасибо всем за решение проблемы и оказанное время
void89a, Ch, olk
Особое спасибо
Кстати, тут тему никак не закрыть?