Редирект на другой сайт
10 ноября 2020 в 16:09
Здравствуйте, как мне в Drupal 8 в PHP, перенаправить клиента на другой сайт?
Пробовал вот так:
<?php
$url = 'https://drupal.ru/';
return new RedirectResponse($url);
?>
Но, это вариант не работает, т.к. RedirectResponse редиректит только внутри сайта.
Подскажите пожалуйста, как можно кодом PHP перенаправить клиента на другой сайт?
Go to accepted answer
- Блог
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Комментарии
Обязательно бэкендом? Для чего это нужно?
Да, мне нужно перенаправить в определённый момент клиента на другой сайт(для оплаты), и чтобы потом оттуда после оплаты его вернули обратно.
Свой commerce пишете? 🙄
не совсем, готовые модули тут не подойдут, у меня уже почти все готово, осталась только проблема с этим редиректом
очень всё обширно, нужно больше информации, редирект когда?
что пишите, контроллер, форма? и т.д.
Контроллер
что возвращается в контроллере сейчас?
Не до конца Вас понимаю, он получает нужные данные из backend, выводит сумму, при нажатии на кнопку должен отправить клиента на другой сайт для оплаты
так всё-таки форма...
https://drupal.ru/node/142550#comment-743820
ох, не увидел сразу, что у вас на внешний ресурс...
Тогда вам верно сказали, что js - это нормальная практика
Я вот просто не понимаю, неужели это нормально в коде php использовать код js для перенаправления на другой сайт? Как это сделать правильно и красиво?
вас никто не заставляет в php писать js
Js вы напишите в js (своей либе) и аттачите её в своём контроллере. Модули оплаты многие перенаправляют на сайт оплаты именно js (кнопочку "оплатить" нажимают)
Я не знаю в теоории можно ли сделать роут на remote url, наверное да, но для такой задачи, думаю, не стоит заморачиваться.
Просто мне нужно после нажатия на кнопку, кое-что что обработать на стороне php, и после перенаправить на другой сайт.
И получается мне надо поставить обработчик на клик по кнопке, и в js отправить ajax запрос в контроллер для обработки информации и после через js перенаправить на другой сайт?
If the route name is not known use RedirectResponse with a URL. When redirecting to an external location, use TrustedRedirectResponse.
https://www.drupal.org/node/2023537
Пробовал сегодня его использовать, но он выдавал ошибку, попробую завтра ещё раз и отпишусь, спасибо за помощь
вот такая ошибка из-за использования TrustedRedirectResponse, не могу понять в чем причина ошибки
весь код в студию и в пастебин плиз
Я понял из-за чего ошибка, но не знаю почему так происходит.
Ошибка из-за "\Drupal::url".
Перед использованием TrustedRedirectResponse, я формирую ссылку, вот так:
<?php
$url = 'http://' . $_SERVER['HTTP_HOST'] . \Drupal::url('mymodule.lk', ['page' => 'pay']);
?>
и из-за этого ошибка.
Зачем вообще вам сервисы? тем более неправильные. У вас же на внешний ресурс
https://git.drupalcode.org/project/drupal/-/blob/9.2.x/core/tests/Drupal...
Это backurl, он мне нужен, для получения ссылку по которому после необходимо перенаправить клиента
я бы лучше сначала протестил TrustedRedirectResponse на заглушке, а затем открывал бы другую тему, что неправильно у меня здесь:
Не вижу в этом смысла, но ладно, сделаю как Вы говорите
просто проблемы нужно решать по мере их поступления )) чтобы работа в кашу не превращалась