使用自定义模块,显示结果,

时间:2010-11-03 04:23:51

标签: drupal drupal-6 drupal-modules

function searchsong_block($op='list',$delta=0){
 $block = array();
 switch($op){

  case "list":
   $block[0][info] = t('Search song');
   return $block;
  case "view":
   $block['subject']='THIS IS SONG SEARCH MODULE';
   $block['content']=drupal_get_form('custom1_default_form');
   return $block;

 }




} 

function custom1_default_form () {
 $form = array();
  $form['txt_name']  =
    array('#type' => 'textfield',
          '#title' => t('Please enter your name'),
          '#default_value' => variable_get('webservice_user_url',''),
          '#maxlength' => '40',
          '#size' => '20',
          );

  $form['submit'] = array(
  '#type' => 'submit',
  '#value' => t('Save Details'),
   );  

  return $form;   

  }

  function custom1_default_form_validate (&$form, &$form_state) {

    if(($form_state['values']['txt_name']) == '') {
        form_set_error('user_webservice', t('Enter a name'));
    }
  }

  function custom1_default_form_submit ($form_id, $form_values) {
  $GET_TXT_VAL = $_POST['txt_name'];
  $result = db_query('SELECT title FROM {node} WHERE type = "%s" AND title LIKE "%%%s%%"', 'song', $GET_TXT_VAL);
  $output='';
  while ($row = db_fetch_object($result)) {
   // drupal_set_message($row->title);----IF I ENABLE THIS LINE THEN MY SEARCH RESULT DISPLAYING IN THE GREEN BLOCK, YES I KNOW THIS FUNCTION SOMETHING LIKE ECHO JUST FOR TESTING PURPOSE WE SHOULD USE
    $output .=$row->title;
  }
  $block['content'] = $output;
 }

如何打印输出

以上模块不会显示任何内容,甚至也不会显示错误

我应该使用主题('itemlist')somthing,但我不知道如何使用它,我应该使用它,

所以我想要的是,我想在内容区域中显示我的搜索结果

请在下面找到我的问题图片视图.. alt text

1 个答案:

答案 0 :(得分:1)

验证和提交不是用于输出数据。
您应该在custom1_default_form中显示结果:
添加提交$ _SESSION ['search_text']或使用多步“存储”(为此学习drupal form api)。
但让我们看看如何通过会议工作:
添加custom1_default_form:

// Here is your form code, so form will appear on the top
// ...
if (isset($_SESSION['search_text'])) {
  //add here your code from submit that output searching result
  $form['result'] = array(
    '#type' => 'item',
    '#value' => $output,
  );
  unset($_SESSION['search_text']); // don't forget clear session
}

您的提交功能应如下所示:

function custom1_default_form_submit($form, &$form_state) {
  $_SESSION['search_text'] = $form_state['values']['txt_name']; 
  // this will store text field into session, then reload page, 
  // so you drupal_get_form will see entered values.
}

这就是全部。

提示:

if(($form_state['values']['txt_name']) == '') {
    form_set_error('user_webservice', t('Enter a name'));
}

如果你这样做,则不需要此代码:

  $form['txt_name'] = array(
   ... // other properties
   '#required' => true,
  );

请在此处阅读表单api:http://api.drupal.org

使用block的其他方法,只需通过drupal_get_form调用输出结果和表单的函数,所以:

...
$block['content']='custom1_default_result';
...
function custom1_default_result () {
  $output .= drupal_get_form('custom1_default_form');
  ...
  $output .= //search result if session filled/
}