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

Главные вкладки

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

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

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

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

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

Лучший ответ

Комментарии

Аватар пользователя Artalek Artalek 10 ноября 2020 в 16:16

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

Аватар пользователя Artalek Artalek 10 ноября 2020 в 16:18

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

Аватар пользователя vlucas vlucas 10 ноября 2020 в 17:50

Drupal 8 в PHP

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

Аватар пользователя Artalek Artalek 10 ноября 2020 в 18:05

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

Аватар пользователя vlucas vlucas 10 ноября 2020 в 18:12

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

Аватар пользователя Artalek Artalek 10 ноября 2020 в 18:16

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

Аватар пользователя vlucas vlucas 10 ноября 2020 в 18:20

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

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

Аватар пользователя Artalek Artalek 10 ноября 2020 в 18:23

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

Аватар пользователя Artalek Artalek 10 ноября 2020 в 18:34

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

Аватар пользователя Artalek Artalek 11 ноября 2020 в 8:12

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

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

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

Аватар пользователя vlucas vlucas 11 ноября 2020 в 8:48

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

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

Smile