2016-03-09 2 views
1

Я борюсь с этим в течение 2 часов. Я сумел создать маршрут с параметром (названный url) как /login/url:ZF2 Создайте маршрут, как «login? Url = foo»

'login' => array(
    'type' => 'segment', 
    'options' => array(
     'route' => '/login[/:url]', 
     'defaults' => array(
      'controller' => 'my_controller', 
      'action'  => 'login', 
     ), 
    ), 
), 

Однако я хотел бы иметь URL, который выглядит как /login?url=foo. Я пробовал что-то вроде:

'route' => '/login[?url=:url]', 

Но это не работает. Любая идея, как это сделать на Zend Framework 2?

Большое спасибо!

EDIT: Пытаться что-то еще, как:

// onBootstrap method --> redirect to login page with request url as param  
$url = $router->assemble(
    array('url', $e->getRequest()->getRequestUri()), 
    array('name' => 'login') 
); 

В контроллере (логин действия):

$request = $this->getRequest(); 
var_dump($request); exit; 

Я не вижу запрошенной URL в любом месте ... любое предложение?

ответ

2

Я не думаю, что вы должны поместить свой сегмент строки запроса в свой маршрут. Было бы разумным, чтобы ваш маршрут был всего лишь /login, а затем управляйте параметром строки запроса в контроллере.

В противном случае, но я не рекомендую его, так как он устарел, вы можете попытаться использовать Query router.

+0

Только что отредактировал мое сообщение. Я пытаюсь сделать это по-своему, я не могу заставить его работать. Есть идеи? – DavidL

+0

Вы можете получить доступ к параметрам запроса в своем контроллере с помощью '$ this-> params() -> fromQuery()'. Более того, чтобы сделать перенаправление, вероятно, это поможет использовать http://framework.zend.com/manual/current/en/modules/zend.mvc.plugins.html#redirect-plugin – marcosh

+0

Спасибо за вашу помощь! Я сделал каждый шаг, указанный в документе: собрать маршрут, ввести местоположение и установить код состояния. Но все еще ничего в контроллере ... и документация очень плоха в том, как можно использовать '$ params' и' $ options' (параметры 'assemble'). – DavidL