Здравствуйте, как мне в Drupal 8 в PHP, перенаправить клиента на другой сайт?
Пробовал вот так:
<?php
$url = 'https://drupal.ru/';
return new RedirectResponse($url);
?>
Но, это вариант не работает, т.к. RedirectResponse редиректит только внутри сайта.
Подскажите пожалуйста, как можно кодом PHP перенаправить клиента на другой сайт?
Комментарии
Обязательно бэкендом? Для чего это нужно?
Да, мне нужно перенаправить в определённый момент клиента на другой сайт(для оплаты), и чтобы потом оттуда после оплаты его вернули обратно.
Свой 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 на заглушке, а затем открывал бы другую тему, что неправильно у меня здесь:
Не вижу в этом смысла, но ладно, сделаю как Вы говорите
просто проблемы нужно решать по мере их поступления )) чтобы работа в кашу не превращалась