作業する必要があるこれらのルートがあります。
/user
/user/1
/user/1.json
現在、私は持っています
'user' => array('key' => 'user', 'controller' => 'user'),
'user/:id' => array('key' => 'user-id', 'controller' => 'user', 'id' => "\d+"),
'user/:id.json' => array('key' => 'user-id-json', 'controller' => 'user', 'id' => "\d+"),
3 つの URL すべての最初のルートに一致します。
私はこれをやってみました:
'user' => array('key' => 'user', 'controller' => 'user'),
'user/"\d+"' => array('key' => 'user-id', 'controller' => 'user', 'id' => 1),
'user/"\d+".json' => array('key' => 'user-id-json', 'controller' => 'user', 'id' => 1),
ただし、最初のルートのみが一致します
Zend Route url ルールで :id を「囲む」方法はありますか?
更新しました
私のブートストラップは次を使用します:
public function _initRoutes() {
$this->addRoutes(array(
'client' => array('key' => 'client', 'controller' => 'client'),
'client/:id' => array('key' => 'client-id', 'controller' => 'client', 'id' => "\d+"),
'user' => array('key' => 'user', 'controller' => 'user'),
'user/:id' => array('key' => 'user-id', 'controller' => 'user', 'id' => "\d+")
));
}
私の拡張エクステンダーは
public function addRoutes($routes) {
$router = Zend_Controller_Front::getInstance()->getRouter();
foreach ($routes as $pattern => $data) {
$router->addRoute(
$data['key'],
new Zend_Controller_Router_Route(
$pattern,
array('controller' => $data['controller'])
)
);
}
}
私はこれを addRoutes にしてみました:
public function addRoutes($routes) {
$router = Zend_Controller_Front::getInstance()->getRouter();
foreach ($routes as $pattern => $data) {
$router->addRoute(
$data['key'],
new Zend_Controller_Router_Route(
$pattern,
array('controller' => $data['controller'])
)
);
$router->addRoute(
$data['key'].'-json',
new Zend_Controller_Router_Route(
$pattern.'.json',
array('controller' => $data['controller'])
)
);
}
}
ただし、後者はたとえば /user/50 をキャンセルします