ফর্ম জমা দেওয়ার পরে পুনঃনির্দেশ করুন


15

আমি ড্রুপাল 8 এ কাস্টম ফর্ম তৈরি করি, আমার মনে আছে আমরা $form_state['redirect'] = 'mycustompath';কাস্টম জমা হ্যান্ডলারের সেট সহ ড্রুপাল 7-তে কাস্টম পাথে পুনঃনির্দেশ করতে পারি , তবে কীভাবে ড্রুপাল 8-তে ফর্ম জমা দেওয়ার পরে ব্যবহারকারীকে পুনর্নির্দেশ করতে পারে?

আমি জানি আমার submitFormপদ্ধতিটি ব্যবহার করা উচিত :

public function submitForm(array &$form, FormStateInterface $form_state)
{
   //submissions jobs ...
   //redirect path
}

উত্তর:


30

আপনার "সাবমিটফর্ম" পদ্ধতিতে কোডের নীচে লিখুন

 $form_state->setRedirect('machine_name');
 return;

machine_nameরাউটিং ফাইলটিতে মেশিনের নামটি কোথায় উল্লেখ করা হয়েছে।

আশা করি এটা কাজে লাগবে .. :)


কাজ করে না. আমি আমার কাস্টম রুটটি চেষ্টা করে দেখি $form_state->setRedirect('/start');return;, ধরুন আমি হোম পৃষ্ঠায় পুনর্নির্দেশ করতে চাই। সঠিক স্নিপেট কি?
— ইউসুফ 26'16

1
$ form_state-> setRedirect ( '<সামনের>'); আসতে;
— parth.k

এটি '/ স্টার্ট' হওয়া উচিত নয়। রাউটিং ফাইলে উল্লিখিত এটি উপনাম।
— parth.k

'<front>'পথের ওরফে আপনি কী কাজ করেছেন? এটি আমার পথtcdev.content: path: '/start' defaults: _controller: 'Drupal\tcdev\Controller\TrainingCenterController::content' _title: 'Start Training Center' requirements: _permission: 'access content'
— ইউসুফ

এটি $ form_state-> setRedirect ('tcdev.content') হওয়া উচিত;
— parth.k

8

আপনি যদি বিল্ডফর্মটি সেট করতে চান তবে আপনাকে কিছু রাউটিং পাথ ব্যবহার করতে হবে।

use Drupal\Core\Url;

$url = Url::fromRoute('route.path');
$form_state->setRedirectUrl($url);

ইউরালের নামস্থান কী? Url' not found
— ইউসুফ

হওয়া উচিত use Drupal\Core\Url;(পূর্ববর্তী স্ল্যাশ ছাড়াই)
— ummdorian

$form_state->setRedirectUrl($url);জমা ফর্ম () এও ব্যবহার করা যেতে পারে।
— শান ডাইচকো

API টি দেখুন: api.drupal.org/api/drupal/… । সেটরেডাইরেক্ট () কেবল প্রথমে রুটকে একটি ইউআরএলে রূপান্তর করে তারপরে সেটরেডাইরেক্টআরল () কল করে।
— অগস্ট

0

আপনি যদি ব্যবহারকারী সম্পাদনা ফর্মটি হোম পৃষ্ঠাতে বা অন্য পৃষ্ঠার নীচে কোড অনুসরণ করে পুনর্নির্দেশ করতে চান।

প্রথমে অ্যাড-হুক - হুক_ফর্ম_াল্টার `

function yourmodulename_form_alter(&$form, FormStateInterface $form_state, $form_id) 
{
    if ($form_id === 'your form id') {
    $form['actions']['submit']['#submit'][] = 'modulename_user_edit_form_submit';
  } 
}

হুক যোগ করার পরে ফাংশন নীচে যোগ করুন

function modulename_user_edit_form_submit($form,  FormStateInterface &$form_state) {
  global $base_url; //set base path
  $response = new Symfony\Component\HttpFoundation\RedirectResponse($base_url ."/xyz"); //set url
  $response->send();
  return;
}

আমি এই সাহায্য আশা করি।


এটি কি আপনার জমা দেওয়া হ্যান্ডলারের পরে সমস্ত জমা দেওয়া হ্যান্ডলারগুলিকে বাইপাস করে না?
— জোকাররা

আপনার কেবলমাত্র $form_state->setRedirect()ফর্মটিতে জমা দেওয়া উচিত যাতে অন্য সমস্ত জমা দেওয়া হ্যান্ডলারের প্রক্রিয়া করা যায়।
— জোকস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.