0

Было любопытно, если бы кто-нибудь знал, как лучше реализовать следующее: у меня есть параметр в моем приложении zend framework 1.12, который эффективно контролирует «область» вещей и является полем в каждом table в моем db, чтобы представить объем строки. Это простая целочисленная переменная и может рассматриваться как «buildingID», поэтому она контролирует, с каким «зданием» мы работаем.Zend Routing/URL helper. Вывести глобальный параметр сначала в URL-адрес

В плагине, у меня есть:

Zend_Controller_Front::getInstance()->getRouter()->setGlobalParam('building', DYNAMIC_INT); 

, который выполняет то, что мне нужно. Когда я создаю URL-адрес с помощью URL-вида-помощника, у меня есть свой параметр, но он всегда находится в конце списка параметров. Я знаю, что это тривиально с точки зрения программирования, но как мне добиться «добавления» этого глобального параметра к моим параметрам url?

site.com/admin/controller/action/param1/xyz/param2/xyz/building/2 

стать

site.com/admin/controller/action/building/2/param1/xyz/param2/xyz ? 

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

Спасибо всем!

ответ

0

Для этого вы можете использовать custom route. Настройка маршрута где-то в вашем загрузочном файле:

$route = new Zend_Controller_Router_Route(
    ':controller/:action/building/:building/*' 
); 
$router = Zend_Controller_Front::getInstance()->getRouter(); 
$router->addRoute('building', $route); 

И затем, при условии, что следующее было названо в какой-то момент перед использованием хелпер URL просмотра ...

Zend_Controller_Front::getInstance()->getRouter()->setGlobalParam('building', DYNAMIC_INT); 

... вы может указать маршрут в качестве второго аргумента хелпера:

echo $this->url(array(
    'controller' => 'admin', 
    'action' => 'controller', 
    'param1' => 'xyz', 
    'param2' => 'xyz', 
), 'building'); 

// /admin/controller/building/1/param1/xyz/param2/xyz 
+0

работает красиво. Спасибо за подсказку ... Мне сейчас очень ясно, что нужно сделать – sudoyum

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

  • Нет связанных вопросов^_^