2011-03-18 5 views
0

私はモジュール開発の知識を向上させたい(これは基本的なものから遠い)ので、境界検索モジュールを開発しようとします。 私は今、ブロックがフォーム含むされるために達成したもの:

/** 
* Implementation of hook_menu() 
* @return defined menu/page items 
*/ 
function perimeter_search_menu() { 
    $items = array(); 

    // Search results page 
    $items['perimeter-search-results'] = array(
    'title' => t('Perimeter search results'), 
    'page callback' => 'perimeter_search_results', 
    'access arguments' => array('view perimeter search'), 
    'type' => MENU_NORMAL_ITEM 
); 

    return $items; 
} 

/** 
* Processing job search queries 
*/ 
function perimeter_search_results() { 
    $page_content = t('Search results'); 
    return $page_content; 
} 

私の(?簡単な)質問がある:どのように私はまた、検索結果を出力する機能を持っている

function perimeter_search_block_view($delta = '') { 
    // Define an empty array for the block output. 
    $block = array(); 

    switch($delta) { 
    case 'perimeter_search_box': 
     $block['subject'] = t('Perimeter search box'); 
     $block['content'] = drupal_get_form('perimeter_search_form');; 
     break; 
    } 

    return $block; 
} 

/** 
* Implementation of the perimeter search form 
* @return array with form data 
*/ 
function perimeter_search_form($form, &$form_state) { 
    $form = array(
    '#action' => 'perimeter-search-results', 
    'keyword' => array(
     '#type' => 'textfield' 
    ), 
    'location' => array(
     '#type' => 'textfield' 
    ), 
    'perimeter' => array(
     '#type' => 'select', 
     '#title' => t('Perimeter'), 
     '#options' => array('15 km', '30 km', '60 km', '120 km') 
    ), 
    'submit' => array(
     '#type' => 'submit', 
     '#value' => t('Start search') 
    ) 
); 

    return $form; 
} 

を私のperimeter_search_results()関数でポストデータ(キーワード、位置、周辺)を取得しますか?

答えて

0

簡単に、あなたはここで、あなたのフォームの例_submit関数を作成する必要があります。

function perimeter_search_form_submit($form, &$form_state) { 
    /* 
    * Your data handling goes here on the $form_state['values']['myfieldname'] 
    * variable. 
    */ 
    drupal_set_message(t('Awesome, you managed to fill the form!')); 
} 

をそして、あなたが検証する必要がある場合..

function perimeter_search_form_validate($form, &$form_state) { 
    if($form_state['values'['myfieldname'] == '') { 
     form_set_error('', t('Hey, it doesn't work like that!')); 
    } 
} 

はちょうどあなたが追加した場合ことを覚えておいてください属性 '#required' =>フォームフィールドにTRUEを指定すると、そのフィールドは常にそのフィールドを必要とするように自動的に検証されるので、コンパイルする必要がある場合はそのフィールドにバリデーターを使用する必要はありません。

関連する問題