Я использую 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
ответ
Создать /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
.
Спасибо. Это очень хороший ответ. Но мое приложение основано на конфигурационных файлах '.ini'. Можете ли вы привести пример с ini config? – pltvs
@ Александр Да, я мог бы, но вы должны лениться прочитать руководство по [Zend_Application_Resource_Router] (http://framework.zend.com/manual/en/zend.application.available-resources.html);) – takeshin
В вашем 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
Незнайка, если ваша структура позволит, но почему бы не иметь имя пользователя как переменная GET? –
Спасибо. Если я не найду другого решения, я бы тебе сказал. – pltvs