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


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.