我的應用程序(這是一個API)的路由遇到了一些非常奇怪的事情。我不使用微型,只是使用普通的Phalcon堆棧。模塊路由不對
這裏是我的路由器定義:
$di->set('router', function() {
$router = new Router(false);
$router->setDefaultAction('index');
$router->setDefaultController('index');
$router->add('/:module/:controller/:params', array(
'module' => 1,
'controller' => 2,
'params' => 3
));
$router->removeExtraSlashes(true);
return $router;
});
的路由器工作與這些示例路徑:
- /V1 /用戶/
- /V1 /用戶/ 1/
- /V1/users/1/permissions/
但是對於某些r艾森以下任何路線都不匹配!
- /V1/
奇怪的是,我是用路由定義打過來,然後,當我改變添加的第一個參數只是「/:模塊」(而不是「/:模塊/:controller /:params'),路由器按預期工作!
我在我的智慧結束,希望有人能幫助我。我不知道我做錯了什麼。不知道爲什麼一個路由定義會起作用,而另一個會失敗。我錯過了什麼嗎?
注:
- 我沒有setDefaultModule,因爲我想要的應用程序模塊丟失時拋出一個錯誤。我計劃對應用進行版本控制,並且我想通過這種方式我可以正確處理丟失的模塊。我無法找到更好的答案來處理這個問題,所以我盡我所能。
- 我使用完整的Phalcon應用程序,而不是微,因爲我想訪問整個框架。只是一個架構決定。
我想避免這種路由。如果最初的路線應該涵蓋所有三個用例(除非我誤解了Phalcon的路線,我希望不是這種情況),我沒有看到有三條路線。我的意思是,最終,如果沒有更好的方法來解決這個問題,那麼我將不得不這樣做。我想知道我的問題的根源是什麼。 但是,我真的很感謝這個建議。謝謝! –
@SebastianFrohm我明白你的感受,但這是它的工作方式,一旦你有很多路線,這是一件好事。你也可以找到* setPrefix *方法。 – galki