#php #zend-framework #url-rewriting #url-routing
#php #zend-framework #url-перезапись #url-маршрутизация
Вопрос:
Я написал следующий код в bootstrap.php файл
protected function _initRoutes() {
$routers = Zend_Controller_Front::getInstance()->getRouter();
$adminadd = new Zend_Controller_Router_Route('/:cityadd/', array('module' => 'user', 'controller' => 'city', 'action' => 'add'));
$routers->addRoute('addcity', $adminadd);
$routing = Zend_Controller_Front::getInstance()->getRouter();
$adminedit = new Zend_Controller_Router_Route('/:cityedit/', array('module' => 'user', 'controller' => 'city', 'action' => 'edit'));
$routing->addRoute('edit-city', $adminedit);
}
Мое название проекта demo
В моем браузере, когда я указываю URL-адрес, http://localhost/demo/public/cityadd
открывается страница добавления страницы действий, т.е,
View script for controller City and script/action name add
Когда я указываю URL-адрес, http://localhost/demo/public/cityedit
также открывается страница добавления страницы действий, т.е,
View script for controller City and script/action name add
вместо этого он должен быть перенаправлен на View script for controller City and script/action name edit
Почему открывается одна и та же страница или почему страница перенаправляется на одно и то же действие для любого заданного URL
Ответ №1:
Проблема в том, что вы используете переменные в своих маршрутах. Перед переменными ставится двоеточие. Маршрут, состоящий только из переменной, будет соответствовать практически всему.
Попробуйте написать свои маршруты без двоеточия:
protected function _initRoutes()
{
$routers = Zend_Controller_Front::getInstance()->getRouter();
$adminadd = new Zend_Controller_Router_Route('/cityadd/', array('module' => 'user', 'controller' => 'city', 'action' => 'add'));
$routers->addRoute('addcity', $adminadd);
$routing = Zend_Controller_Front::getInstance()->getRouter();
$adminedit = new Zend_Controller_Router_Route('/cityedit/', array('module' => 'user', 'controller' => 'city', 'action' => 'edit'));
$routing->addRoute('edit-city', $adminedit);
}