Добавить параметр к текущему URL с помощью помощника вида в Zend - PullRequest
2 голосов
/ 17 мая 2011

В моем макете-скрипте я хочу создать ссылку, добавив [? | &] Lang = en к текущему URL, используя помощник вида url.Итак, я хочу, чтобы это произошло:

http://localhost/user/edit/1 => http://localhost/user/edit/1?lang=en
http://localhost/index?page=2 => http://localhost/index?page=2&lang=en

Я пробовал решение Zend Framework: добавление строк запроса к URL текущей страницы , прямой доступ к маршрутизатору, но это работает.

Мой скрипт-макет содержит:

<a href="<?=$this->escape( $this->url( array('lang'=>'en')) )?>">English</a>

Еслииспользуется маршрут по умолчанию , к нему добавляется / lang / en , но при использовании другого маршрута вообще ничего не добавляется.
Итак, есть ли способ сделатьэто в Zend без меня, чтобы разобрать URL?

Edit
Извините за мое неправильное объяснение.Нет, я не сделал пользовательский маршрутизатор.Я только что добавил другие маршруты .Виноват.Один маршрут, который не работает:

$Routes = array(
    'user' => array(
        'route' => 'admin/user/:mode/:id',
        'defaults' => array('controller' => 'admin', 'action' => 'user', 'mode'=>'', 'id' => 0)
    )
);

foreach( $Routes as $k=>$v ) {
    $route = new Zend_Controller_Router_Route($v['route'], $v['defaults']);
    $router->addRoute($k, $route);
}

1 Ответ

1 голос
/ 17 мая 2011

Upd:

Вы должны добавить подстановочный знак к вашему маршруту или явно указать параметр 'lang'.

'admin/user/:mode/:id/*'

Кроме того, согласно вашему комментарию, вы можете сделать что-то вроде этого:

class controllerplugin extends Zend_Controller_Plugin_Abstract
{
    function routeShutdown($request)
    {
        if($request->getParam('lang', false) {
            //store lang
            Zend_Controller_Front::getInstance()->getRouter()->setGlobalParam('lang', NULL); //check if this will remove lang from wildcard parameters, have no working zf installation here to check.
        }
    }
}
...