开发者

With custom module, display result ,

开发者 https://www.devze.com 2023-01-23 10:22 出处:网络
function searchsong_block($op=\'list\',$delta=0){ $block = array(); switch($op){ case \"list\": $block[0][info] = t(\'Search song\');
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 ($fo开发者_开发百科rm_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;
 }

How to print my output ,

Above module does not display anything , even error also,

i thing i should use theme('itemlist') somthing , but i am not sure how to use this , and where i should use this ,

So what i want is , i want to display my search result , in the content region ,

Please find my question picture view below..

With custom module, display result ,


Validate and submit are not for outputting data.
You should show your results in custom1_default_form:
Add in submit $_SESSION['search_text'] or use multistep "storage" (learn drupal form api for this).
But let's look how to work via sessions:
Add in 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
}

Your submit function should be like this:

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.
}

This is all.

Tips:

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

This code is not needed, if you do:

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

Read please about form api here: http://api.drupal.org

Other way to use block, just call function that output result and form via drupal_get_form, so:

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

精彩评论

暂无评论...
验证码 换一张
取 消