Редирект на другой сайт

10 ноября 2020 в 16:09
Аватар пользователя Artalek Artalek 0 23 Решено

Здравствуйте, как мне в Drupal 8 в PHP, перенаправить клиента на другой сайт?
Пробовал вот так:

<?php
$url 
'https://drupal.ru/';
return new 
RedirectResponse($url);
?>

Но, это вариант не работает, т.к. RedirectResponse редиректит только внутри сайта.

Подскажите пожалуйста, как можно кодом PHP перенаправить клиента на другой сайт?

Комментарии

Да, мне нужно перенаправить в определённый момент клиента на другой сайт(для оплаты), и чтобы потом оттуда после оплаты его вернули обратно.

10 ноября 2020 в 16:16

не совсем, готовые модули тут не подойдут, у меня уже почти все готово, осталась только проблема с этим редиректом

10 ноября 2020 в 16:18

Drupal 8 в PHP

очень всё обширно, нужно больше информации, редирект когда?
что пишите, контроллер, форма? и т.д.

10 ноября 2020 в 17:50

Не до конца Вас понимаю, он получает нужные данные из backend, выводит сумму, при нажатии на кнопку должен отправить клиента на другой сайт для оплаты

10 ноября 2020 в 18:05

ох, не увидел сразу, что у вас на внешний ресурс...
Тогда вам верно сказали, что js - это нормальная практика

10 ноября 2020 в 18:12

Я вот просто не понимаю, неужели это нормально в коде php использовать код js для перенаправления на другой сайт? Как это сделать правильно и красиво?

10 ноября 2020 в 18:16

вас никто не заставляет в php писать js
Js вы напишите в js (своей либе) и аттачите её в своём контроллере. Модули оплаты многие перенаправляют на сайт оплаты именно js (кнопочку "оплатить" нажимают)

Я не знаю в теоории можно ли сделать роут на remote url, наверное да, но для такой задачи, думаю, не стоит заморачиваться.

10 ноября 2020 в 18:20

Просто мне нужно после нажатия на кнопку, кое-что что обработать на стороне php, и после перенаправить на другой сайт.
И получается мне надо поставить обработчик на клик по кнопке, и в js отправить ajax запрос в контроллер для обработки информации и после через js перенаправить на другой сайт?

10 ноября 2020 в 18:23

Пробовал сегодня его использовать, но он выдавал ошибку, попробую завтра ещё раз и отпишусь, спасибо за помощь

10 ноября 2020 в 18:34

Я понял из-за чего ошибка, но не знаю почему так происходит.
Ошибка из-за "\Drupal::url".
Перед использованием TrustedRedirectResponse, я формирую ссылку, вот так:

<?php
$url 
'http://' $_SERVER['HTTP_HOST'] . \Drupal::url('mymodule.lk', ['page' => 'pay']);
?>

и из-за этого ошибка.

11 ноября 2020 в 8:12

я бы лучше сначала протестил TrustedRedirectResponse на заглушке, а затем открывал бы другую тему, что неправильно у меня здесь:

$url = 'http://' . $_SERVER['HTTP_HOST'] . \Drupal::url('mymodule.lk', ['page' => 'pay']);

Smile

11 ноября 2020 в 8:48