Zend Mod переписать ИЛИ маршрутизации



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

Заранее спасибо.

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,

В вашем 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

Другие вопросы по тегам