কোনও নোড যুক্ত বা সম্পাদনার পরে কোনও কাস্টম পৃষ্ঠায় পুনর্নির্দেশ করুন


15

ব্যবহার করে hook_form_alter, আমি কীভাবে কোনও ব্যবহারকারীকে তৈরি বা সম্পাদিত নোডের পরিবর্তে নোড তৈরি বা সম্পাদনার পরে আ কাস্টম পৃষ্ঠায় পুনর্নির্দেশ করতে পারি?

এর জন্য বর্তমান কোডটি hook_form_alter()নিম্নোক্ত:

function custom_form_alter(&$form, &$form_state, $form_id) {
  if ($form['#id'] == 'custom-node-form') {
    $form['actions']['submit']['#value'] = t('Add Entry');
    $form['field_custom_email']['und'][0]['value']['#element_validate'] = array('_custom_form_validate_email');
  }
}

"এর জন্য একটি মডিউল রয়েছে": নোড গন্তব্য ( drupal.org/project/node_destination ) তবে এটি কেবল ডি 6 এর জন্য উপলব্ধ। সম্ভবত এটি অভিযোজিত হতে পারে।
বেনজ

উত্তর:


16
function custom_form_node_form_alter(&$form, &$form_state, $form_id) {
  if ($form['#node']->type == 'custom') {
    $form['actions']['submit']['#value'] = t('Add Entry');
    $form['field_custom_email']['und'][0]['value']['#element_validate'] = array('_custom_form_validate_email');
    $form['#submit'][] = 'custom_node_submit';
  }
}

function custom_node_submit($form, &$form_state) {
  $form_state['redirect'] = 'choose/your/path';
}

ফর্মটি জমা দেওয়ার জন্য ক্লিক করা বোতামটি থেকে কোডটি ফর্মটি স্বতন্ত্রভাবে পুনঃনির্দেশ করে। আপনি যদি কোনও নির্দিষ্ট জমা দেওয়ার বোতামটি ক্লিক করা হয় কেবল তখনই কোনও ফর্ম পুনর্নির্দেশ করতে চান, তবে আপনার নিম্নলিখিত কোডটি ব্যবহার করা উচিত।

function custom_form_node_form_alter(&$form, &$form_state, $form_id) {
  if ($form['#node']->type == 'custom') {
    $form['actions']['submit']['#value'] = t('Add Entry');
    $form['field_custom_email']['und'][0]['value']['#element_validate'] = array('_custom_form_validate_email');
    $form['actions']['submit']['#submit'][] = 'custom_node_submit';
  }
}

function custom_node_submit($form, &$form_state) {
  $form_state['redirect'] = 'choose/your/path';
}

 

  • ফর্ম আইডিতে হাইফেন নেই। ফর্ম আইডি হ'ল পিএইচপি ফাংশনটির নাম যা ফর্মটি জেনারেট করে (ওরফে ফর্ম নির্মাতা) এবং পিএইচপি ফাংশনটির নামে হাইফেন থাকতে পারে না।
  • ফর্ম আইডি হুক_ফর্ম_ল্টার () , হুক_ফর্ম_বিএএসএফএএমএম_আইডি_এল্টার () এবং হুক_ফর্ম_এফএআরএম_আইডি_এলটার () এর প্রয়োগে পাস করা হয়েছে । hook_form_FORM_ID_alter()এটি সত্যিকারের প্রয়োজন নেই, যেমন এটি একটি নির্দিষ্ট ফর্মের জন্য বলা হয়, অন্য দুটি হুকের একাধিক ফর্মের জন্য অনুরোধ করা হয়।
  • প্রথম ফাংশন হুক_ফর্ম_বিএএসএফআরএম_আইডি_এলটার () প্রয়োগকরণ ; এই ক্ষেত্রে, বেস ফর্ম আইডি হ'ল "নোড_ফর্ম" যা নোড সম্পাদনা ফর্মের জন্য বেস ফর্ম।
  • নোড সম্পাদনা ফর্মটিতে $form['#node']যা বস্তু সম্পাদনা করার জন্য নোড অবজেক্ট; "কাস্টম" হ'ল আপনি যে কোনও নোড সম্পাদনা করলে ব্যবহারকারীদের পুনর্নির্দেশ করতে চান এমন সামগ্রীর ধরণের সংক্ষিপ্ত আইডি।
  • $form_state['redirect']থেকে পরিবর্তনের hook_form_alter()কোনও প্রভাব নেই; এটি জমা দেওয়ার হ্যান্ডলার থেকে সেট করা দরকার।

এর জন্য ধন্যবাদ. লক্ষ্য করুন &যে function custom_node_submit($form, &$form_state) {খুবই গুরুত্বপূর্ণ। অন্যথায় আপনি রাজ্যটিকে রেফারেন্স হিসাবে পাস করছেন না এবং ম্যানুয়ালি সম্পাদনাগুলি প্রভাব ফেলবে না।
ব্রাম

9

এই কোডটি একটি দ্রুপাল 7 সাইটে কাজ করে।

/**
 * Implements hook_form_alter()
 */

function custom_form_alter(&$form, &$form_state, $form_id) {    
  if ($form_id == 'article_node_form') {
    $form['actions']['submit']['#submit'][] = 'mysubmit_node_submit';
  }     
}

function mysubmit_node_submit($form, &$form_state) {
  $form_state['redirect'] = '/homepage';
}

কোন উত্তর আপনি # 4 হিসাবে উল্লেখ করছেন?
Елин Й.

কেন এটি আমার পক্ষে কাজ করছে না? আমি একই কোডটি ব্যবহার করছি
রুবি

আপনার ক্যাশে @ রবি পরিষ্কার করেছেন?
কোড্রামামা

বিদ্যমান নোডগুলির জন্য, আপনি প্রথমে গন্তব্যটি আনসেট করা নিশ্চিত করে নিন যা সাধারণত পৃষ্ঠায় সম্পাদনা বোতামটি ক্লিক করার সময় URL এ যুক্ত হয় admin/content: drupal.stackexchange.com/a/192271/15055
লেইম্যানেক্স

4

এটি সেটিং দ্বারা করা যেতে পারে $form_state['redirect'], উদাহরণস্বরূপ নিম্নলিখিত লাইনগুলির একটি ব্যবহার করে।

$form_state['redirect'] = "some-internal-path";
$form_state['redirect'] = array($path, $options_array, $http_code);

এটি একই যুক্তি যা আপনি পাস করবেন drupal_goto()


@ শোয়েব নওয়াজের প্রতিক্রিয়াটির জন্য আপনাকে ধন্যবাদ। আমি ভাগ্যের সাথে হুক_ফর্ম_লটার হুকটিতে $ form_state ['redirect'] যুক্ত করেছি added
সাইট্রিকগুই

আমার জীবনের জন্য, আমি কোথাও কার্যকর হওয়ার জন্য $ form_state ['redirect'] পেতে পারি না।
সাইট্রিকগুই

নোড যুক্ত বা সম্পাদনার পরে আপনি যদি পুনঃনির্দেশের চেষ্টা করেন তবে এটি কাজ করবে না । কেন তা দেখতে নোড ফর্ম জমাটি দেখুন । আপনি যে মানটি নির্ধারণ করেছেন $form_state['redirect']সেটিকে যদি ($node->nid)সত্য হিসাবে মূল্যায়ন করা হয় তবে ওভাররাইট করা হবে ।
ফ্রি র‌্যাডিকাল

2

এটি আপনার পক্ষে বিকল্প কিনা তা নিশ্চিত না, তবে এটি যদি কোনও সামগ্রী ধরণের হয় তবে আপনি কোনও নির্দিষ্ট সামগ্রীর প্রকারের আপডেট বা তৈরির ক্ষেত্রে ট্রিপস হওয়ার নিয়ম সেট করে নিয়ম মডিউলটি ব্যবহার করে এটি অর্জন করতে পারেন।

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