
Быть такого не может.как предложено в 1-м варианте не выходит, зф запрещает.
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
public function _initRouter()
{
$router = new Zend_Controller_Router_Rewrite();
$route = new Zend_Controller_Router_Route(
'dir/subdir/:id/*',
array(
'id' => 11,
'controller' => 'user',
'action' => 'info'
)
);
$router->addDefaultRoutes();
$router->addRoute('user', $route);
Zend_Controller_Front::getInstance()->setRouter($router);
return $router;
}
}
class UserController extends Zend_Controller_Action
{
public function indexAction()
{
$this->_helper->viewRenderer->setNoRender();
echo "<h1>It's me</h1>";
}
public function infoAction()
{
$this->_helper->viewRenderer->setNoRender();
echo '<a href="' . $this->view->url(array('id' => 17, 'param' => 5), 'user') . '">sample route User</a>';
echo '<br>';
echo '<a href="' . $this->view->url(array('id' => 1777, 'param' => 555), 'default') . '">sample route Default</a>';
}
}
Автор оригинала: Fortop
Охохонюшки....
Во-первых, "ссылка" - она. И "По этой ссылке"
Во-вторых, там даже переопределять ничего не надо.
Ну и в третьих, естественно, что если Вы переопределили, и правильно инстанцировали роутер, то будет передаваться именно он.
В крайнем случае у Вас должен был использоваться дефолтный Zend_Controller_Router_Rewrite, а не какой-то Zend_Controller_Router_Route (который является не роутером, у путем - маршрутом)
Ну и рабочий пример
PHP:class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { public function _initRouter() { $router = new Zend_Controller_Router_Rewrite(); $route = new Zend_Controller_Router_Route( 'dir/subdir/:id/*', array( 'id' => 11, 'controller' => 'user', 'action' => 'info' ) ); $router->addDefaultRoutes(); $router->addRoute('user', $route); Zend_Controller_Front::getInstance()->setRouter($router); return $router; } } class UserController extends Zend_Controller_Action { public function indexAction() { $this->_helper->viewRenderer->setNoRender(); echo "<h1>It's me</h1>"; } public function infoAction() { $this->_helper->viewRenderer->setNoRender(); echo '<a href="' . $this->view->url(array('id' => 17, 'param' => 5), 'user') . '">sample route User</a>'; echo '<br>'; echo '<a href="' . $this->view->url(array('id' => 1777, 'param' => 555), 'default') . '">sample route Default</a>'; } }
Извиняюсь, опечатался.Во-первых, "ссылка" - она. И "По этой ссылке"
Переопределял я для дебага. Вот как выглядит переопределенный класс:Во-вторых, там даже переопределять ничего не надо.
<?php
require_once 'Zend/Controller/Router/Route.php';
class Application_Controller_Router_Route extends Zend_Controller_Router_Route
{
}
Точно так же можно добавить и несколько десятков других роутов. Определять собственный класс абсолютно не нужно./каталог/подкаталог/:id/param/5
Мысль не понята. Приведите что ли уже пример дампа и желательно стектрейс. Чтобы было немного понятнее о чем идет речьТак вот путь, который зф выбрал использует в данный момент переделывается в Zend_Controller_Router_Route, все остальные остаются Application_Controller_Router_Route