0
A
回答
3
最現實的方法是獲取路線的終點。
控制器沒有文檔所要求的所需結構。一個動作方法不需要在名稱後加Action
作爲後綴。這樣記錄的原因是因爲很多人在其路由yml中使用捕獲所有配置,需要後綴來猜測端點。
當你打印出來的路線:
print_r($this->container->get('router')->getRouteCollection()->all());
你會看到每個航線使用的控制器方法。 這些路線在技術上不屬於任何束,因爲您可以用任何類的任何方法指向路線。
但是,您可以使用列表和一些字符串魔法來根據命名空間來告訴捆綁包。
請記住,_controller
就像web_profiler.controller.profiler:infoAction
意味着該方法屬於通過依賴注入實例化的服務。
1
Altough沒有官方的方式來獲得控制器,你可以使用下面的代碼來獲取所有控制器:
$bundles = $this->container->getParameter('kernel.bundles');
$controllers = [];
foreach ($bundles as $bundle) {
$reflection = new \ReflectionClass($bundle);
$controllerDirectory = dirname($reflection->getFileName()) . '/Controller';
if (file_exists($controllerDirectory)) {
$d = dir($controllerDirectory);
while (false !== ($entry = $d->read())) {
if (preg_match("/^([A-Z0-9-_]+Controller).php/i", $entry, $matches)) {
$controllers[] = ['fileName' => $controllerDirectory. '/'. $entry, 'class' => $reflection->getNamespaceName() . '\Controller\\' . $matches[1]];
}
}
$d->close();
}
}
print_r($controllers);
相關問題
- 1. Symfony2:獲取控制器所有路由的列表
- 2. Symfony2 POST方法控制器
- 3. 在grails中獲取控制器中的所有方法3
- 4. 獲取路線控制器Symfony2的
- 5. 在所有控制器之前運行方法symfony2
- 6. 獲取/請求Session Symfony2的另一種方法是什麼?
- 7. 在Enterprise Architect中獲取所有版本控制軟件包的最快方法。
- 8. 所有控制器都可以訪問的一種方法 - 放在哪裏?
- 9. 另一種獲取控制器中View對象實例的方法
- 10. 控制傳遞給另一種方法,在同一控制器
- 11. MonoRail - 獲取所有控制器
- 12. 獲取所有角度控制器
- 13. Symfony2如何訪問所有控制器中的一組數據?
- 14. 無法獲取MVC控制器中的所有ajax參數
- 15. RSpec - 無法獲取控制器中的所有關聯屬性
- 16. 有沒有一種方法可以爲{{render}}指定控制器?
- 17. 從url獲取控制器和方法?
- 18. 創建一個可從所有控制器訪問的方法
- 19. 重用CakePHP控制器中所有方法的一個視圖
- 20. 在父控制器的方法燒成所述子控制器的方法
- 21. 有一種方法來重新加載角控制器編程
- 22. $ ionicLoading沒有顯示在控制器負載第一種方法
- 23. Play Scala從另一種方法調用控制器方法
- 24. 有沒有一種方法來設置IE的範圍控制?
- 25. 的Symfony2 - 呼叫中的所有控制器動作
- 26. 通用所有的控制方法
- 27. 制定控制器的所有操作方法ChildActionOnly
- 28. 獲取所有已實施某種方法的模型
- 29. 在Flex 4中,有一種方法可以獲取域中的所有類?
- 30. 有什麼辦法,我所有的控制器始終在Symfony2中
[這裏我實現呈現一個選擇所有的邏輯控制器名的FormType( http://stackoverflow.com/questions/24718786/symofny2-get-a-listing-of-available-logical-controller-names)。 關心! – juanmf
我很久以前就找到了解決方案;) – IgiX