আমি কীভাবে একটি দ্রুপাল অ্যাডমিন সেটিংস ফর্মটিতে একটি জমা কলব্যাক ব্যবহার করব?


14

আমি আমার প্রশাসক ফর্ম করতে এই কোডটি ব্যবহার করছি:

function custom_orders_admin(){
  $form = array();

  $form['custom_ignore_terms']['ignore_terms'] = array(
    '#type' => 'checkboxes',
    '#title' => t('Don\'t display these'),
    '#default_value' => variable_get('custom_ignore_terms', array()),
    '#options' => drupal_map_assoc($termTypes),
    '#description' => t("Choose the terms you do not want displayed."),
    '#required' => FALSE,
  );

  return system_settings_form($form);
}

তবে আমি লক্ষ্য করেছি যে আমি যদি এটি করি:

function custom_orders_admin_submit($form, &$form_state) {
  exit(var_dump($form_state));
}

আমি বেরোতে পারি না আমি অনুমান করছি system_settings_form()এটি জমা দেওয়ার ক্ষেত্রে যত্ন নেয়। আমি কীভাবে আমার নিয়ন্ত্রণ ফিরে পাব? আমাকে _সামিত হ্যান্ডলারটিতে কিছু কাস্টম প্রসেসিং করা দরকার ...


আমি কোনও '#submit'সম্পত্তি যুক্ত করার চেষ্টা করেছি $formকিন্তু এটি কোনওরকম কাজে লাগেনি।
আদিত্য এমপি

3
ওহ, দুঃখিত যে আসলে কাজ করেছে! আমি করেছি $form['#submit'] = array('custom_food_orders_admin_submit');এবং এখন এটি কাজ করছে। ধন্যবাদ!
আদিত্য এমপি

উত্তর:


30

$form_id . '_submit'অন্য কোনও জমা হ্যান্ডলার সেট না করা থাকলে কেবল অগ্নিকাণ্ডের ডিফল্ট সাবমিট হ্যান্ডলার ।

কারণ সিস্টেম_সেটিংস_ফর্ম () একটি হ্যান্ডলার জমা দেওয়ার জন্য সেট করে, ডিফল্ট হ্যান্ডলারটি আগুন দেয় না, তাই আপনি যদি এটি ব্যবহার করতে চান তবে আপনাকে এটি নির্দিষ্ট করতে হবে।

আপনি এটি এর মতো করতে পারেন:

/**
 * A custom form.
 */
function custom_form() {
  $form = array();

  $form['custom_form_field'] = array(
    '#type' => 'textfield',
    '#title' => t('Custom form field'),
    '#default_value' => variable_get('custom_form_field', ''),
  );

  // Set a submit handler manually because the default submit handler
  // gets overridden by the system_settings_form() submit handler.
  $form['#submit'][] = 'custom_form_submit';

  return system_settings_form($form);
}

/**
 * Submit handler for the custom form.
 */
function custom_form_submit($form, &$form_state) {
  // Submit code here.
}

আপনার জমা হ্যান্ডলারটিকে এভাবে যুক্ত করার অর্থ আপনার সিস্টেম_সেটিংস_ফর্ম () হ্যান্ডলার জমা দেওয়ার আগে চলবে।

আপনি যদি চান আপনার পরিবর্তে, এর পরিবর্তে:

// Set a submit handler manually because the default submit handler
// gets overridden by the system_settings_form() submit handler.
$form['#submit'][] = 'custom_form_submit';

return system_settings_form($form);

না:

$form = system_settings_form($form);
$form['#submit'][] = 'custom_form_submit';
return $form;

এটি না করার বিষয়ে নিশ্চিত হন:

$form = system_settings_form($form);
$form['#submit'] = array('custom_form_submit');
return $form;

কারণ এতে সিস্টেম_স্টেটিং_ফর্ম () হ্যান্ডলারের জমা দেয়, যা সিস্টেম_সেটিংস_ফর্ম () ফাংশনটি প্রথম স্থানে ব্যবহারের উদ্দেশ্যকে পরাস্ত করবে।

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