Есть функция, в которой программно создаются два блока
switch($op){
case 'list':
$blocks[0]['info'] = t('Блок с формой №1');
$blocks[0]['cache'] = BLOCK_NO_CACHE;
$blocks[1]['info'] = t('Блок с формой №2');
$blocks[1]['cache'] = BLOCK_NO_CACHE;
return $blocks;
case 'view':
switch($delta){
case 0:
$block['content'] = drupal_get_form('mymodule_form');
case 1:
$block['content'] = drupal_get_form('mymodule_secondform_form');
return $block;
}
}
}
Далее у меня две функции-конструктора формы
$form['myfield'] = array(
'#type' => 'textfield',
'#title' => 'Текстовое поле',
'#maxlength' => 64,
'#default_value' => 'Поле формы 1',
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Отправить'),
);
return $form;
}
function mymodule_secondform_form(){
$form['myfield'] = array(
'#type' => 'textfield',
'#title' => 'Текстовое поле',
'#maxlength' => 64,
'#default_value' => 'Поле формы 2',
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Отправить по форме 2'),
);
return $form;
}
В итоге у меня выводится во всех блоках (и в 1, и во 2) форма с элементами mymodule_secondform_form. Т.е. в блоке 1 выводится также myfield со значением 'Поле формы 2'.
Подскажите, где ошибка и как правильно создавать две формы в одном модуле?
Комментарии
гыгы
http://php.net/manual/en/control-structures.switch.php
<?php
function blabla_block_view($delta='') {
switch($delta) {
case 'delta_1':
$block['subject'] = null;
$block['content'] = blabla_form_1($delta);
break;
case 'delta_2':
$block['subject'] = null;
$block['content'] = blabla_form_2($delta);
break;
}
return $block;
}
?>
Подскажите , это как-то должно решить описанную мною проблему (ядро drupal 6, блок вывожу хуком mymodule_block)?
у вас php код неправильный в hook_block
при любых раскладах возвращается второй блок, ибо исполнение не прерывается (break)
решили, без понимания элементарных управляющих конструкций php, модули под друпал делать? ну удачи, вас ждет дофига открытий чудных
Спасибо за помощь в решении проблемы. Учимся на ошибках)