私にはかなりシンプルに聞こえるが、そうではないように見えるものが欲しい.
私の問題は、アプリケーションに 2 つのルートが必要なことです。
モジュールが管理者の場合は常に、次のルートを適用します。
$router->addRoute(
'backend',
new Zend_Controller_Router_Route('/:module/:controller/:action/:id/:value', array('module' => 'admin', 'controller' => 'dashboard', 'action' => 'index', 'id' => ':id', 'value' => ':value'))
);
これはうまくいきます。URL の例: http://localhost/server/domains/demo/admin/images/album/3
admin はモジュール、images はコントローラーなどです。
私が望むのは、ユーザーがに行くと、にhttp://localhost/server/domains/demo
リダイレクトされることだけです。以降はすべて単一のパラメーターと見なす必要があります (unknown の可能性あり)。default module
index controller
index action
demo/
/
オンラインで見つけたものを使用したりRoute_Regex
、試し(.*)
たり、試したりして、いくつかのことを試しました。(\d+)
値を切り替えたり、静的にしたり、 on/off を切り替えたりしましremoveDefaultRouter
たが、何も機能しませんでした。以下に、現在のブートストラップを示します。何か案は?
$router = $this->frontController->getRouter();
$router->removeDefaultRoutes();
$router->addRoute(
'backend',
new Zend_Controller_Router_Route('/admin/:controller/:action/:id/:value', array('module' => 'admin', 'controller' => 'dashboard', 'action' => 'index', 'id' => ':id', 'value' => ':value'))
);
$router->addRoute(
'frontend',
new Zend_Controller_Router_Route('/default/:controller/:action/(.*)', array('module' => 'default', 'controller' => 'index', 'action' => 'index'))
);
バックエンドは正常に動作しhttp://localhost/server/domains/demo/
ますが、次のエラーが発生します。No route matched the request
Zend_Route は私にとって常に少し漠然としたものだったので、答えが与えられたらその理由を説明してください。前もって感謝します!
一時修正
私が使用する一時的な修正の下。それはまさに私が望むように機能しますが、モジュールが管理者であるかどうかを確認しなくても Zend_Route で同じことが達成できると信じています。
$router = $this->frontController->getRouter();
$uri = explode('demo/', $_SERVER['REQUEST_URI']);
$uri = (isset($uri[1])) ? explode('/', $uri[1]) : $uri[0];
if($uri[0] == 'admin')
{
$route = new Zend_Controller_Router_Route('/:module/:controller/:action/:id/:value', array('module' => 'admin', 'controller' => 'dashboard', 'action' => 'index', 'id' => null, 'value' => null));
$router->addRoute('router', $route);
}
else
{
$route = new Zend_Controller_Router_Route('/*', array('module' => 'default', 'controller' => 'index', 'action' => 'index'));
$router->addRoute('router', $route);
}