Как перенаправить пользователя на предыдущую страницу Zend Framework 3

Я разрабатываю веб-сайт, на котором есть мои группы и другие группы, присутствующие на двух разных веб-страницах. Как в моих группах, так и в других группах есть возможность видеть участников каждой группы, которая перенаправляется на страницу members.phtml.
Теперь я хочу добавить кнопку "Назад" на members.phtml странице вверху, чтобы перейти на предыдущую страницу (мои группы/другие группы). Есть ли способ сохранить текущий URL-адрес и отправить его на страницу members.phtml?


person Chaitanya Sairam    schedule 22.11.2016    source источник


Ответы (1)


Вы можете использовать плагин перенаправления и добавить параметр запроса previous к URL-адресу. Проверьте этот ответ в качестве примера и проверьте Документация по ZF2 здесь в плагине перенаправления. Получилось бы что-то вроде этого:

http://www.example.com/members.phtml?previous=my_groups

В контроллере для вашего маршрута my_groups, где вы добавили URL-адрес перенаправления на свою страницу участников, вам нужно будет добавить параметр запроса к маршруту перенаправления:

$previous = 'my_groups';
$this->redirect()->toRoute(
    'members', 
    array(
        'action' => 'index'
    ),
    array( 'query' => array(
        'previous' => $previous
    ))
);

Теперь, когда запрашивается страница members.phtml, вы можете найти предыдущую страницу внутри параметров запроса объекта запроса. Вы можете легко получить к нему доступ в своем контроллере следующим образом:

$previous = $this->params()->fromQuery('previous'); // my_groups

Теперь вы знаете, был ли доступ к странице участников с my_groups или other_groups, и вы можете соответствующим образом отобразить кнопку «Назад».

ОБНОВИТЬ

Некоторая дополнительная информация после вашего комментария...

Вы можете найти URL-адрес текущей страницы, например, используя:

$this->getRequest()->getRequestUri();

Или вы можете получить текущий совпадающий маршрут:

$this->getMvcEvent()->getRouteMatch()->getMatchedRouteName();

И вы можете использовать это для динамического добавления предыдущего URL-адреса.

person Wilt    schedule 22.11.2016
comment
Спасибо @Wilt, это сработало отлично!! Но что, если есть так много страниц для перенаправления, что можно сделать в таком случае. Пример: скажем, я покупаю что-то на веб-сайте электронной коммерции, чтобы добавить товар в корзину, я должен сначала войти в систему, а после входа я должен быть перенаправлен на страницу, где меня видели в последний раз. - person Chaitanya Sairam; 22.11.2016
comment
@ChaitanyaSairam Если это сработало, я предлагаю вам принять мой ответ. Я добавил комментарий с дополнительной информацией, которая может вам помочь. На StackOverflow есть много примеров для таких пользовательских случаев. - person Wilt; 22.11.2016
comment
Спасибо за информацию!! - person Chaitanya Sairam; 22.11.2016