php ड्रुपल: फ़ॉर्म के रूप में फॉर्म के रूप में फ़ॉर्म के परिणाम प्रस्तुत करना कैसे करें




forms drupal (4)

मैं फार्म के रूप में एक ही पृष्ठ पर प्रस्तुत किए गए फॉर्म के परिणामों को कैसे प्रिंट करूं?

संबंधित हुक_मेनू:

    $items['admin/content/ncbi_subsites/paths'] = array(
        'title' => 'Paths',
        'description' => 'Paths for a particular subsite',
        'page callback' => 'ncbi_subsites_show_path_page',
        'access arguments' => array( 'administer site configuration' ),
        'type' => MENU_LOCAL_TASK,
    );

पृष्ठ कॉलबैक:

function ncbi_subsites_show_path_page() {
  $f = drupal_get_form('_ncbi_subsites_show_paths_form');
  return $f;
}

प्रपत्र निर्माण कार्य:

   function _ncbi_subsites_show_paths_form() {
      // bunch of code here

      $form['subsite'] = array(
        '#title' => t('Subsites'),
        '#type' => 'select',
        '#description' => 'Choose a subsite to get its paths',
        '#default_value' => 'Choose a subsite',
        '#options'=> $tmp,
      );

      $form['showthem'] = array(
        '#type' => 'submit',
        '#value' => 'Show paths',
        '#submit' => array( 'ncbi_subsites_show_paths_submit'),    
      );

      return $form;
    }

फ़ंक्शन सबमिट करें (संक्षिप्तता के लिए कार्य को मान्य नहीं छोड़ दिया गया)

function ncbi_subsites_show_paths_submit( &$form, &$form_state ) {
  //dpm ( $form_state );
  $subsite_name = $form_state['values']['subsite'];
  $subsite = new Subsite( $subsite_name ); //y own class that I use internally in this module
  $paths = $subsite->normalized_paths;

  // build list
  $list = theme_item_list( $paths );
}

अगर मैं उस $ सूची चर को मुद्रित करता हूं, तो वह वही है जो मुझे चाहिए, लेकिन मुझे यकीन नहीं है कि इसे 'ncbi_subsites_show_path_page' से निर्मित मूल फ़ॉर्म पेज के साथ पृष्ठ में कैसे प्राप्त करें। किसी भी प्रकार की मदद की बेहद सराहना की जाती है!


Drupal7 के लिए मुझे लगता है कि यदि आप $form_state['rebuild'] , तो फार्म चर को PHP सुपर-ग्लोबल वैरिएबल $_POST (या $_REQUEST ) से सबसे अच्छा उपयोग किया जा सकता है। हालांकि, यदि आप $form_state['redirect'] उपयोग करते हैं, तो $_SESSION का समाधान बेहतर है ( $_GET या $_REQUEST का उपयोग करने के बजाय)

मुझे यह समस्या विशेषज्ञों के लिए बहुत मुश्किल भी मिलती है शायद द्रुपल के पास कुछ और आसान और सहज ज्ञान युक्त तरीका है, जिसे हम नहीं जानते।


पोस्ट किए गए लिंक निकित की मुख्य जानकारी $ form_state ['rebuild'] है यहां Drupal 7 प्रलेखन से कुछ जानकारी है जो मेरा मानना ​​है कि यह केवल Drupal 6 के लिए लागू होता है ...

$ form_state ['rebuild']: आम तौर पर, पूरे फॉर्म प्रसंस्करण के पूरा होने के बाद और हैंडलर चलाने के लिए प्रस्तुत किया जाता है, एक फ़ॉर्म किया जाता है और डॉप्ल_अरेडर_फॉर्म () उपयोगकर्ता को एक GET अनुरोध का उपयोग करते हुए एक नया पेज पर रीडायरेक्ट करता है (ताकि एक ब्राउज़र रीफ्रेश फॉर्म फिर से जमा नहीं करता है)। हालांकि, यदि 'पुनर्निर्माण' को सही पर सेट किया गया है, तो फॉर्म की एक नई प्रतिलिपि तुरंत बनाया और ब्राउज़र को भेजी जाती है; एक रीडायरेक्ट के बजाय इसका उपयोग मल्टी-स्टेप फॉर्म के लिए किया जाता है, जैसे विज़ार्ड और पुष्टिकरण फ़ॉर्म। इसके अलावा, यदि कोई फॉर्म वैधीकरण हैंडलर ने 'रीबिल्ड' को सही और एक सत्यापन त्रुटि हुई है, तो फॉर्म वापस लौटने से पहले पुनर्निर्माण किया जाता है, जिससे फॉर्म एलीमेंट्स को परिवर्तित किया जा सकता है, जैसा कि विशिष्ट सत्यापन त्रुटि के लिए उपयुक्त है।


Drupal6 नोड। मॉड्यूल और dblog.module ऐसा करने के लिए व्यवस्थापक / सामग्री / नोड और व्यवस्थापक / रिपोर्ट / डीबॉग के लिए एक पृष्ठ कॉलबैक प्रदान करता है जिसमें इसकी आउटपुट में गाया गया फ़ॉर्म शामिल होता है।

modules/dblog/dblog.admin.inc
dblog_overview()

modules/node/node.admin.inc
node_admin_nodes()

फ़ॉर्म में सबमिट करें, अद्यतित फ़िल्टर सेटिंग $ _SESSION में संग्रहीत हैं

पृष्ठ कॉलबैक में यह $ _SESSION में संग्रहीत फ़िल्टर सेटिंग्स के आधार पर परिणाम प्रदान करता है।

$ _SESSION यहां सिर्फ एक और वैश्विक है (यद्यपि एक निरंतर एक है)।


यह एक पृष्ठ का पूरा काम उदाहरण और एक ही पृष्ठ पर एक सूची है

<?php


/*
* Implements hook_mennu()
*/
function test_menu() {
  $items['test'] = array(
    'title'             => t('Test'),
    'page callback'     => 'test_search_page',
    'access callback'   => True,
  );

  return $items;
}


function test_search_page(){
    $form = drupal_get_form('test_search_form');

    return $form;
}


function test_search_form($form, &$form_state){
  $header = array(t('id'), t('name'), t('firstname'));
  $rows = Null;
  $form['name'] = array(
    '#type'             => 'textfield',
    '#title'            => t('Name'),
    '#required'         => True,
    '#default_value'    => isset($_GET['name']) ? $_GET['name'] : Null
  );

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



  if (isset($_GET['name'])){
    $rows = get_data();
  }
  $form['table'] = array(
    '#theme' => 'table',
    '#header' => $header,
    '#rows' => $rows,
    '#empty' => t('Aucun résultat.')
  );
  $form['pager'] = array('#markup' => theme('pager'));

  /*
  if (isset($form_state['table'])) {
    $form['table']  = $form_state['table'];
  }
  $form['pager'] = array('#markup' => theme('pager'));
  */
  return $form;
}

function test_search_form_submit($form, &$form_state){
   $form_state['redirect'] = array(
    // $path
    'test',
    // $options
    array('query' => array('name' => $form_state['values']['name'])),
    // $http_response_code
    302,
  );
}

//$header = array(t('id'), t('name'), t('firstname'));

function get_data(){
    $data =  array(
        0   => array(
            'id' => '0',
            'name'  => 'pokpokpok',
            'firstname' => 'pokpokpok',
        ),
        1   => array(
            'id' => '1',
            'name'  => 'pokpokpok',
            'firstname' => 'pokpokpok',
        ),
        2   => array(
            'id' => '2',
            'name'  => 'pokpokpok',
            'firstname' => 'pokpokpok',
        ),
        3   => array(
            'id' => '3',
            'name'  => 'pokpokpok',
            'firstname' => 'pokpokpok',
        ),
        4   => array(
            'id' => '4',
            'name'  => 'pokpokpok',
            'firstname' => 'pokpokpok',
        ),
        5   => array(
            'id' => '5',
            'name'  => 'pokpokpok',
            'firstname' => 'pokpokpok',
        ),
        6   => array(
            'id' => '6',
            'name'  => 'pokpokpok',
            'firstname' => 'pokpokpok',
        ),
        7   => array(
            'id' => '7',
            'name'  => 'pokpokpok',
            'firstname' => 'pokpokpok',
        ),
        8   => array(
            'id' => '8',
            'name'  => 'pokpokpok',
            'firstname' => 'pokpokpok',
        ),
        9   => array(
            'id' => '9',
            'name'  => 'pokpokpok',
            'firstname' => 'pokpokpok',
        ),
        10   => array(
            'id' => '10',
            'name'  => 'pokpokpok',
            'firstname' => 'pokpokpok',
        ),
        11   => array(
            'id' => '11',
            'name'  => 'pokpokpok',
            'firstname' => 'pokpokpok',
        )
    );
    $paging = pager_array_splice($data, 2);

    return $paging;
}
/*
    $header = array(t('id'), t('name'), t('firstname'));

    $form_state['table'] = array(
      '#theme' => 'table',
      '#header' => $header,
      '#rows' => $paging,
      '#empty' => t('Aucun r?sultat.')
    );

    $form_state['rebuild'] = True;*/


function pager_array_splice($data, $limit = 9, $element = 0) {
  global $pager_page_array, $pager_total, $pager_total_items;
  $page = isset($_GET['page']) ? $_GET['page'] : '';

  // Convert comma-separated $page to an array, used by other functions.
  $pager_page_array = explode(',', $page);

  // We calculate the total of pages as ceil(items / limit).
  $pager_total_items[$element] = count($data);
  $pager_total[$element] = ceil($pager_total_items[$element] / $limit);
  $pager_page_array[$element] = max(0, min((int)$pager_page_array[$element], ((int)$pager_total[$element]) - 1));
  return array_slice($data, $pager_page_array[$element] * $limit, $limit, TRUE);
}




drupal-fapi