Как правильно создать и вывести две формы в одном модуле?

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

Аватар пользователя Poveritov Poveritov 1 июля 2015 в 11:39

Есть функция, в которой программно создаются два блока

function mymodule_block($op='list', $delta = 0, $edit = array()){
    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;
            }
    }
}

Далее у меня две функции-конструктора формы

function mymodule_form(){
    $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'.

Подскажите, где ошибка и как правильно создавать две формы в одном модуле?

Комментарии

Аватар пользователя .poltergeist .poltergeist 1 июля 2015 в 14:52

гыгы
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;

?>
Аватар пользователя Poveritov Poveritov 1 июля 2015 в 16:00

.poltergeist wrote:
гыгы
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)?

Аватар пользователя .poltergeist .poltergeist 1 июля 2015 в 18:07

у вас php код неправильный в hook_block
при любых раскладах возвращается второй блок, ибо исполнение не прерывается (break)
решили, без понимания элементарных управляющих конструкций php, модули под друпал делать? ну удачи, вас ждет дофига открытий чудных