2011-05-13 10 views
3

自分のサイトに "todo"リストを追加して、ログインしたユーザーが行うべき簡単なタスクのリストを保持できるようにしたいと思います。 概念的には、入力ボックスの配列を表示して、既存のタスクを編集したり、新しいタスクを追加したり、既存のタスクを削除したりできます。 各入力ボックスは独自のフォームになり、変更を1つずつ送信できます。 私はdrupalを全く新しくしており、これを達成する方法を示すことができるオンラインのリソースを見つけることができないようです。複数のフォームのDrupal 7

答えて

7

drupal_get_formを何度か呼び出すページコールバックを作成する必要があります。同じフォームビルダがフォームを処理する場合は、hook_formsを実装する必要があります。もちろん

function foo_menu() { 
    $items['foo'] = array(
    'page callback' => 'foo_page', 
    'access arguments' => array('access foo'), 
); 
    return $items; 
} 
function foo_page() { 
    for ($i = 0; $i < 10; $i++) { 
    $build[] = drupal_get_form('foo_form_' . $i, $i); 
    } 
    return $build; 
} 
function foo_forms($form_id, $args) { 
    if (!empty($args) && $form_id == 'foo_form_' . $args[0]) { 
    $forms[$form_id]['callback'] = 'foo_form'; 
    } 
    return $forms; 
} 
function foo_form($form, $form_state, $i) { 
    return $form; 
} 

、フォームはその後、foo_formsを省略して書くだけ異なる場合foo_form_0foo_form_1などなど

+0

これは正しくありません。hook_formsから$ formsを返さないと、少なくともDrupal 7では動作しません。私は編集を提出しました。レビュー中です。 – DrCord

+1

注:この回答には、各部品が独自に提出された#ajax部分がありません。 – chx

関連する問題