ব্যবহারকারীদের অন্য কোনও পৃষ্ঠায় পুনর্নির্দেশের জন্য আমি কোন কার্য / পদ্ধতিটি ব্যবহার করতে পারি?


12

ড্রুপাল 7 এ, আমি নিম্নলিখিত কোডটি ব্যবহার করি।

function my_goto($path) { 
  drupal_goto($path, array(), 301);
}

ড্রুপাল 8 এ আমার কোন কোড ব্যবহার করা উচিত?


3
drupal.org/node/2023537 হল drupal_goto () এর পরিবর্তনের রেকর্ড, যখনই আপনি একটি নির্দিষ্ট ফাংশনটির জন্য প্রতিস্থাপন খুঁজছেন, প্রথমে সেখানে দেখুন look
বার্ডির

উত্তর:


24

এটি সেই কোড যা দ্রুপাল ৮-এ ব্যবহার করা উচিত more আরও তথ্যের জন্য পরিবর্তন রেকর্ড দেখুন ।

use Symfony\Component\HttpFoundation\RedirectResponse;

function my_goto($path) { 
  $response = new RedirectResponse($path);
  $response->send();
  return;
}

6
যোগ করতে ভুলবেন নাuse Symfony\Component\HttpFoundation\RedirectResponse;
ম্যাট ফ্লেচার

এটি নিম্ন স্তরের এইচটিপিফাউন্ডেশন কোডটি কোনও সিমফনি অ্যাপ্লিকেশনে উপযুক্ত নয়, symfony.com/doc/current/compferences/… দেখুন
ব্যবহারকারী 89751

8

অনু ম্যাথিউয়ের প্রতিক্রিয়া বাড়ানোর জন্য ;

একটি স্থিতি কোড যুক্ত করতে, এটি RedirectResponse শ্রেণিতে কেবল দ্বিতীয় প্যারাম;

use Symfony\Component\HttpFoundation\RedirectResponse;

function my_goto($path) { 
  $response = new RedirectResponse($path, 302);
  $response->send();
  return;
}

1
আমার জন্য এটি কেবল একবারে কাজ করবে বলে মনে হয় এবং আপনি যখন আবার কাজ করতে চান তখন প্রতিটি বার ক্যাশে সাফ করতে হবে। যে কাছাকাছি একটি উপায় আছে কি?
ম্যাট


4

আমি এখনও drupal_gotoড্রুপাল 8 এ কাজ করি নি তবে ডকুমেন্টেশন অনুযায়ী ড্রুপাল 8 থেকে সরানো হয়েছে।

আপনার জায়গায় drupal_gotoলিখতে হবে:

return new RedirectResponse(\Drupal::url('route.name'));

এবং প্যারামিটার সহ এরকম কিছু:

return new RedirectResponse(\Drupal::url('route.name', [], ['absolute' => TRUE]));

এখানে https://www.drupal.org/node/2023537 এবং শ্রেণি পুনর্নির্দেশের রেসপন্স দেখুন


আপনার জবাবের জন্য ধন্যবাদ ut তবে আমি কীভাবে বর্তমান ইউআরএল থেকে রুটের নাম পেতে পারি (কারণ ইউআরএল কনফিগারেশন ফর্মটি ব্যবহার করে সেট করা হচ্ছে)
আনু ম্যাথিউ

আপনার অর্থ পুনর্নির্দেশের পথটি গতিশীল ???
সুমিত মদন

হ্যাঁ, আপনার
ডানটি

ঠিক আছে \Drupal::url('route.name')আপনার ইউআরএল বা সম্ভবত নিখুঁত url দিয়ে প্রতিস্থাপন করার চেষ্টা করুন ।
সুমিত মদন

নতুন রিডাইরেক্টরেস্পোনস ($ পরম_আরল) ফেরত দিন; আমার জন্য কাজ করা হয় :) কিন্তু তার দেখানো "পুনর্নির্দেশ করতে example.com/absolute_url " পর্দায় বার্তা
আনু ম্যাথু

4

বিল্ট-ইন সিম্ফোনিজ ইভেন্টডিসপাচার কম্পোনেন্টের উপকারের মাধ্যমে এটি অর্জন করা যেতে পারে। আপনাকে যা করতে হবে তা হ'ল একটি কাস্টম মডিউল তৈরি করা। আপনার পরিষেবাদি.আইএমএল ফাইল যুক্ত করুন এবং উপযুক্ত পরিষেবা কনফিগারেশন সরবরাহ করুন।

services:
  mymodue.subscriber:
    class: Drupal\my_module\EventSubscriber
    tags:
      - { name: event_subscriber }

আপনার মডিউলগুলিতে এসআরসি ডিরেক্টরিতে আপনার ইভেন্টসউসক্রাইবার.এফপি ক্লাস তৈরি করুন এবং আপনার পদ্ধতিগুলি এখানে বর্ণনা করুন।

    <?php
       use Symfony\Component\HttpFoundation\RedirectResponse;

        public function checkForCustomRedirect(GetResponseEvent $event) {     
            $route_name = \Drupal::request()->attributes->get(RouteObjectInterface::ROUTE_NAME);
            if($route_name === 'module.testPage') {
              $event->setResponse(new RedirectResponse($url, $status = 302,$headers);
            }
         }

          /**
           * {@inheritdoc}
           */
        public static function getSubscribedEvents() {
            $events = [];
            $events[KernelEvents::REQUEST][] = array('checkForCustomRedirect');
            return $events;
        }

l url সংজ্ঞায়িত করা হয় না।
ড্যান শুমাকার

1

আমার জন্য নিখুঁতভাবে কাজ করা পুনর্নির্দেশ কোডটি নিম্নলিখিত:

$response = new RedirectResponse($path);
return $response->send();

অন্য যে কোনও ক্ষেত্রে আমি একরকম ব্যতিক্রম বা ত্রুটিগুলি পাচ্ছি , উদাহরণস্বরূপ: লজিকএক্সেপশন: নিয়ামককে অবশ্যই একটি প্রতিক্রিয়া ফিরিয়ে দিতে হবে ...

অথবা

https://www.drupal.org/project/drupal/issues/2852657

এটি সম্পর্কে ইতিমধ্যে একটি আলোচনা আছে, আশা করি যে সাহায্য করে!


0

এটি অভ্যন্তরীণ বা বাহ্যিক পুনঃনির্দেশের জন্য কাজ করে:

use Symfony\Component\HttpFoundation\RedirectResponse;
use Drupal\Core\Url;

   $url = Url::fromUri('internal:/node/27'); // choose a path
   // $url =  Url::fromUri('https://external_site.com/');
    $destination = $url->toString();
    $response = new RedirectResponse($destination, 301);
    $response->send();
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.