একটি ড্রুপাল ফর্ম জমা দেওয়ার পরে কীভাবে ফলাফল মুদ্রণ করব?


9

আমার একটি সাধারণ ড্রুপাল মডিউল সেটআপ রয়েছে যার একটি একক পাঠ্যবাক্স রয়েছে।

পাঠ্যবক্সে যা টাইপ করা হয়েছিল তা ব্যবহার করে আমি ফিরে আসতে পারি drupal_set_message():

function firstmodule_form1_submit($form, &$form_state) {
    drupal_set_message(t("The user is $username"));
}

তবে echo $username;আমার জন্য কাজ করবে না, কিছুই মুদ্রিত হয় না। আমি কীভাবে ব্যবহার না করে ফলাফল ফিরিয়ে দিতে পারি drupal_set_message()?

উত্তর:


7

এটি পরিচালনা করার সাধারণ উপায় হ'ল একাধিক-পদক্ষেপের কার্যপ্রবাহকে বাস্তবায়ন করা। দেখুন drupal_rebuild_form()আরও তথ্যের জন্য, কিন্তু মূলত আপনাকে সেট $form_state['rebuild'] = TRUE;আপনার জমা হ্যান্ডলার, এবং মূল ফর্ম ফাংশনে একটি চেক যোগ কিনা দেখতে ফর্মের জমা দেওয়া হয়েছে। যদি এটি থাকে তবে আপনার জমা দেওয়া মানগুলিতে অ্যাক্সেস থাকতে পারে এবং ফিট হিসাবে আপনি যেমন ফর্মটি পরিচালনা করতে পারেন।

একটি খুব মৌলিক উদাহরণ:

function MYMODULE_some_form($form, &$form_state) {
  // If the form has been submitted, output something related to the submission
  if (!empty($form_state['values']['some_field'])) {
    $form['submission'] = array(
      '#markup' => function_to_get_markup_from_value($form_state['values']['some_field'])
    );
  }
  else {
    // Otherwise build the normal form
    $form['some_field'] = array(
      '#type' => 'textfield',
      // ...
    );
  }

  return $form;
}

function MYMODULE_some_form_submit($form, &$form_state) {
  $form_state['rebuild'] = TRUE;
}

2

একটি ফর্ম জমা হ্যান্ডলার কেবল drupal_set_message()লগ ব্যবহার করে বা লগ দিয়ে একটি বার্তা লিখে মুদ্রণ করতে পারে watchdog()

বিকল্পটি অধিবেশনটিতে প্রয়োজনীয় ডেটা সংরক্ষণ করে এবং ব্যবহারকারীকে (ব্যবহার করে $form_state['redirect'] = 'page path';) এমন কোনও পৃষ্ঠায় পুনর্নির্দেশ করে যেখানে সেশনের সামগ্রী দেখানো হয়।

function firstmodule_menu() {
  $items['the path for your page'] = array(
    'page callback' => 'firstmodule_show_submitted_data';
    // ...
  );

  return $items;
}

function firstmodule_form1_submit($form, &$form_state) {
  $_SESSION['firstmodule_username'] = $username;
  // ...

  $form_state['redirect'] = 'the path for your page';
}

function firstmodule_show_submitted_data() {
  // Populate $result with the string to show.

  return $result;
}

পার্শ্ব নোট হিসাবে, প্রথম আর্গুমেন্টটি t()অবশ্যই আক্ষরিক স্ট্রিং হওয়া উচিত, আপনার ক্ষেত্রে যেমন দুটি স্ট্রিং সংযুক্ত করে স্ট্রিং পাওয়া যায় না। নিম্নলিখিত কোড হিসাবে আপনার স্থানধারক ব্যবহার করা উচিত।

drupal_set_message(t("The user is %username", array('%username' => $username)));

ড্রুপাল In-এ স্ট্রিং ফিরিয়ে দেওয়ার পরিবর্তে আপনি একটি রেন্ডার অ্যারে ফিরিয়ে দিতে পারেন ।


1

সঞ্চিত সমস্ত জমা ডেটা $form_state, আপনি যদি দেখতে চান ডেভেল মডিউলটি ইনস্টল হয় এবং আপনি সর্বদা এটির পরে করতে পারেন তবে:

firstmodule_form1_submitসমস্ত অ্যারের প্রিন্ট করতে আপনার ফাংশনের অভ্যন্তরে $form_state- dpm($form_state)- এবং আপনি আউটপুট দেখতে পাবেন যেখানে আপনি আপনার পাঠ্যবক্সের ব্যবহারকারীর নাম বা অন্য কোনও সন্ধান করতে পারেন, এটির মতোই কিছু হবে$form_state['values']['username']

এবং তারপরে আপনি এটি প্রিন্ট করতে পারেন drupal_set_message(t($form_state['values']['username']);


ধন্যবাদ, আমার কাছে সেই অংশটি আছে তবে ড্রুপাল_সেট_ম্যাসেজ এটিকে "সহায়তা বার্তা" টাইপ জিনিস হিসাবে ফিরিয়ে দেয়। আমি নিজেই পৃষ্ঠাটিতে প্রচুর সামগ্রী ফিরে আসতে চাই।
h00j

0

আপনাকে যা করতে হবে তা হ'ল মেনু কলব্যাক করা, মূলত এটি এমন একটি পৃষ্ঠা যা আপনি সেট আপ করেন এবং তথ্যটি প্রদর্শন করেন।

আরও তথ্য এখানে উপলব্ধ: http://api.drupal.org/api/drupal/includes!menu.inc/group/menu/7 এবং আপনি hook_menu সম্পর্কে আরও পড়তে হবে ()

আশা করি এটি সাহায্য করে, আপনার উদাহরণের দরকার হলে আমাকে বলুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.