2012-09-22 2 views
0

У меня есть URL-адрес, как это: view_test.php?user=56Как использовать Zend Route Regex для маршрутизации URL-адреса другому?

и я пытаюсь получить его здесь:

$router->addRoute(
     'test', 
     new Zend_Controller_Router_Route(
      'test/view/:id', 
      array(
       'module' => 'test', 
       'controller' => 'index', 
       'action' => 'view' 
      ) 
     ) 
    ); 

в основном из view_test.php?user=56 к /test/view/56

им не уверен, как справиться с ?.

любые идеи?

благодаря

ответ

0

AFAIK, в маршруте, вы не можете ссылаться на содержимое строки запроса в URL, только запрос его путь. Но вы можете сделать следующее:

Добавить маршрут, который отображает старый URL к действию редиректа:

$router->addRoute('view-test-redirect', new Zend_Controller_Router_Route_Static(
    'view_test.php', 
    array(
     'module' => 'test', 
     'controller' => 'index', 
     'action' => 'view-test-redirect', 
    ) 
); 

Кроме того, добавить маршрут, представляющее собой «реальные» действия:

$router->addRoute('view-test', new Zend_Controller_Router_Route(
    'view/test/:user', 
    array(
     'module' => 'test', 
     'controller' => 'index', 
     'action' => 'view-test', 
    ) 
); 

название действия view-test-redirect соответствует ниже действия:

public function viewTestRedirectAction() 
{ 
    $user = (int) $this->_getParam('user', null); 
    if (!$user){ 
     throw new \Exception('Missing user'); 
    } 
    $this->_helper->redirector->goToRouteAndExit(array('user' => $user), 'view-test'); 
} 

Тогда ваш view-test действие может сделать что-то ожидаемым образом:

public function viewTestController() 
{ 
    $user = (int) $this->_getParam('user', null); 
    if (!$user){ 
     throw new \Exception('Missing user'); 
    } 
    // Read db, assign results to view, praise unicorns, etc. 
} 

Не тестировался, просто мозг демпинга, чтобы продемонстрировать идею.

Смежные вопросы