контроллер представления модели — Как пересылать (не перенаправлять) запросы в PHP?

Я работаю над простым сайтом PHP, который требует, чтобы у меня была возможность перенаправить запрос пользователя на другую страницу (обратите внимание, что я сказал вперед, и не переадресовывать). Я знаю, как перенаправить, манипулируя header переменная, но я не хочу этого делать, как описано ниже.

Я пытаюсь написать очень простое приложение со списком рассылки на основе MVC на PHP, опираясь на мои знания об этом в JSP. В JSP мне очень понравилось то, что вы могли вперед или же переадресовывать запрос. Для моих целей мне нужно вперед как я хочу сохранить параметры запроса (тогда как переадресовывать уронит их).

Вот описание того, чего я хочу достичь:

  • Получить входные данные из формы (то есть. /add.php)
  • Обработать ввод на странице, вызванной действием формы (то есть. /process.php) и добавьте сообщение об успехе в объект запроса
  • Переслать на другую страницу (то есть. /display.php) для отображения сообщения об успехе в объекте запроса

Единственный способ передать сообщение с запросом для отображения — добавить его к объекту запроса, а затем получить к нему доступ с перенаправленной страницы. Тем не менее, единственный способ перехода на другую страницу — это использование header метод, который отбрасывает объект запроса (из того, что я могу сказать). Я хочу найти способ вперед запрос (объект) на новую страницу, так что я могу получить доступ к переменным запроса с новой страницы.

Есть ли вообще что-нибудь сделать в PHP? в Java getRequestDispatcher.forward() это так приятно, но я не могу найти эквивалент через поиск. Я пробовал несколько похожих вопросов, включая следующие, но на самом деле я так и не нашел такой, где бы вопрос и ответ были именно такими, как я хотел. Кажется, что большинство ответов имеют какое-то отношение к cURL, но я не хочу на самом деле получить файл, а просто переслать запрос, чтобы получить доступ к объекту запроса с другой страницы.

Есть ли в PHP эквивалент Java-метода getRequestDispatcher.forward ()?

Дайте мне знать, если я должен включить что-нибудь еще?

1

Решение

Я считаю, что вы можете сделать это с помощью include. Перед отправкой формы просто используйте, как включение, на главной странице:

include ("add.php"); - where the input forms are

после обработки информации включите display.php таким же образом; используя это, display.php будет использовать те же параметры из заголовка, потому что он включен в ту же главную страницу.

вкратце: add.php, process.php и display.php будут модулями для материнской страницы, но загружены в другом состоянии обработки формы.

Надеюсь, поможет!

1

Другие решения

используйте curl с другим методом get, post. он отправит запрос, а также вернет ответ.

0

Наиболее распространенный метод передачи сообщений конечному пользователю от страницы к странице называется миганием сеанса.

Это когда вы временно сохраняете переменную в сеансе, пока она не будет прочитана.

Предполагая, что у вас уже есть сеансы в использовании:

На process.php:

$_SESSION['message'] = 'Your data has been saved!';

На display.php:

if (isset($_SESSION['message'])) {
echo $_SESSION['message'];
unset($_SESSION['message']);
}

Вы также можете сохранить весь объект запроса в сеансе.

0

Так что, если я в курсе, PHP предоставляет только базовый набор инструментов в этом случае. И нет ничего похожего на «вперед» в HTTP изначально. Это просто абстракция / идея фреймворка. Есть два способа добиться этого: скопировать все параметры из запроса и выполнить новый реальный HTTP-запрос (с перенаправлением) или внутреннюю пересылку: таким образом, инфраструктура создаст поддельный запрос и вызовет другой контроллер и действие без выдачи нового физического HTTP-запроса.

0
По вопросам рекламы [email protected]