1



Я использую Zend Framework в своем веб-приложении. У меня следующий URL: domain/user/user/username. Где первый user является контроллером в модуле default. Второй user - переменная GET. username - значение этой переменной. Все хорошо. Но для хорошего удобства я хочу иметь следующий URL: domain/user/username. Я знаю, что по правилам Zend GET это должен быть мой первый вариант. Но, может быть, я смогу сделать это с помощью перезаписи мод или Zend_Route? Помоги мне, пожалуйста.

Спасибо заранее.zend mod rewrite OR routing

+0

Незнайка, если ваша структура позволит, но почему бы не иметь имя пользователя как переменная GET? –

+0

Спасибо. Если я не найду другого решения, я бы тебе сказал. – pltvs

ответ

2

Создать /application/configs/routes.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<routes> 
    <user> 
     <route>user/:username/*</route> 
     <defaults> 
      <module>default</module> 
      <controller>user</controller> 
      <action>view</action> 
      <username>0</username> 
     </defaults> 
    </user> 
</routes> 

Тогда в Bootstrap.php:

public function _initRouter() 
{ 
    $front = Zend_Controller_Front::getInstance(); 
    $router = $front->getRouter(); 
    $config = new Zend_Config_Xml(dirname(__FILE__) . '/configs/routes.xml'); 
    $router->addConfig($config); 

    return $router; 
} 

Вы также можете сделать то же самое во многих других способов, например, в application.ini.

+0

Спасибо. Это очень хороший ответ. Но мое приложение основано на конфигурационных файлах '.ini'. Можете ли вы привести пример с ini config? – pltvs

+0

@ Александр Да, я мог бы, но вы должны лениться прочитать руководство по [Zend_Application_Resource_Router] (http://framework.zend.com/manual/en/zend.application.available-resources.html);) – takeshin

1

В вашем application.ini добавить:

resources.router.routes.article.type = "Zend_Controller_Router_Route" 
resources.router.routes.article.route = "user/:username/*" 
resources.router.routes.article.defaults.module = "default" 
resources.router.routes.article.defaults.controller = "user" 
resources.router.routes.article.defaults.action = "view" 
resources.router.routes.article.reqs.username = "guest" 

, и я предлагаю вам взглянуть на:

http://framework.zend.com/manual/en/zend.controller.router.html