Drupal 7 में, मैं निम्नलिखित कोड का उपयोग करता हूं।
function my_goto($path) {
drupal_goto($path, array(), 301);
}
Drupal 8 में मुझे किस कोड का उपयोग करना चाहिए?
Drupal 7 में, मैं निम्नलिखित कोड का उपयोग करता हूं।
function my_goto($path) {
drupal_goto($path, array(), 301);
}
Drupal 8 में मुझे किस कोड का उपयोग करना चाहिए?
जवाबों:
यह कोड है जिसे Drupal 8 में उपयोग किया जाना चाहिए । अधिक जानकारी के लिए परिवर्तन रिकॉर्ड देखें ।
use Symfony\Component\HttpFoundation\RedirectResponse;
function my_goto($path) {
$response = new RedirectResponse($path);
$response->send();
return;
}
use Symfony\Component\HttpFoundation\RedirectResponse;
अनु मैथ्यू की प्रतिक्रिया पर निर्माण करने के लिए ;
एक स्थिति कोड जोड़ने के लिए, RedirectResponse वर्ग में इसका दूसरा पैराम है;
use Symfony\Component\HttpFoundation\RedirectResponse;
function my_goto($path) {
$response = new RedirectResponse($path, 302);
$response->send();
return;
}
मैं 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 और कक्षा पुनर्निर्देशन
\Drupal::url('route.name')
अपने यूआरएल या शायद पूर्ण यूआरएल के साथ बदलने की कोशिश करें ।
यह अंतर्निहित सिम्फनीज में उपयोग करके प्राप्त किया जा सकता है EventDispatcher घटक। आपको बस एक कस्टम मॉड्यूल बनाना है। अपनी services.yml फ़ाइल जोड़ें और उचित सेवा कॉन्फिगरेशन प्रदान करें।
services:
mymodue.subscriber:
class: Drupal\my_module\EventSubscriber
tags:
- { name: event_subscriber }
अपने मॉड्यूल src निर्देशिका में अपने EventSubscriber.php क्लास बनाएँ और यहाँ आप विधियों का वर्णन करें।
<?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;
}
मेरे लिए बिल्कुल सही रीडायरेक्ट कोड निम्नलिखित है:
$response = new RedirectResponse($path);
return $response->send();
किसी भी अन्य मामलों में मुझे कुछ प्रकार के अपवाद या त्रुटियां मिल रही हैं, उदाहरण के लिए: LogicException: नियंत्रक को प्रतिसाद देना चाहिए ...
या
https://www.drupal.org/project/drupal/issues/2852657
वहां पहले से ही इसके बारे में एक चर्चा, उम्मीद है कि मदद करता है!
यह आंतरिक या बाहरी पुनर्निर्देशन के लिए काम करता है:
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();