Làm cách nào để liệt kê tất cả các bộ điều khiển/hành động trên trang web của tôi? Cấu hình :: listObjects ('model') dường như không tồn tại nữa. Tôi đang cố gắng để viết một chức năng để tạo/thêm vào ACO trong thiết lập ACL của tôi. Cảm ơn.Liệt kê tất cả các bộ điều khiển/hành động trong Cakephp 3
6
A
Trả lời
1
Nó không giống như bất cứ điều gì tương tự như thế này vẫn còn có sẵn trong Cake3, và cũng không cần thiết vì không gian tên tôi nghĩ.
Vì vậy, trong ngắn hạn, bạn có thể cố gắng để làm điều này:
- Đọc tất cả các bộ điều khiển từ thư mục điều khiển mức độ ứng dụng
- Đọc tất cả các thư mục controller plugin (Lấy thư mục Plugin qua Plugin::path())
- lặp trên các bộ điều khiển bạn đã thu thập được trong các bước trước đó (Bạn cần phải sử dụng Ứng dụng :: sử dụng())
- Sử dụng reflections để nhận các phương pháp công khai từ mỗi bộ điều khiển
8
Vì vậy, đây là những gì tôi đã làm. Trong điều khiển tài nguyên của tôi:
Bao gồm các thư viện lớp phản chiếu/phương pháp
use ReflectionClass;
use ReflectionMethod;
Để có được điều khiển:
public function getControllers() {
$files = scandir('../src/Controller/');
$results = [];
$ignoreList = [
'.',
'..',
'Component',
'AppController.php',
];
foreach($files as $file){
if(!in_array($file, $ignoreList)) {
$controller = explode('.', $file)[0];
array_push($results, str_replace('Controller', '', $controller));
}
}
return $results;
}
Và bây giờ cho các hoạt động:
public function getActions($controllerName) {
$className = 'App\\Controller\\'.$controllerName.'Controller';
$class = new ReflectionClass($className);
$actions = $class->getMethods(ReflectionMethod::IS_PUBLIC);
$results = [$controllerName => []];
$ignoreList = ['beforeFilter', 'afterFilter', 'initialize'];
foreach($actions as $action){
if($action->class == $className && !in_array($action->name, $ignoreList)){
array_push($results[$controllerName], $action->name);
}
}
return $results;
}
Cuối cùng, để buộc chúng lại với nhau:
public function getResources(){
$controllers = $this->getControllers();
$resources = [];
foreach($controllers as $controller){
$actions = $this->getActions($controller);
array_push($resources, $actions);
}
return $resources;
}
Tôi hy vọng rằng sẽ giúp một số người.
0
Tôi đang sử dụng CakePHP 3.x và đã có vấn đề với chức năng "getActions"
Cú pháp chính xác cho "ReflectionClass" và "ReflectionMethod" là:
public function getActions($controllerName) {
$className = 'App\\Controller\\'.$controllerName.'Controller';
$class = new \ReflectionClass($className);
$actions = $class->getMethods(\ReflectionMethod::IS_PUBLIC);
$results = [$controllerName => []];
$ignoreList = ['beforeFilter', 'afterFilter', 'initialize'];
foreach($actions as $action){
if($action->class == $className && !in_array($action->name, $ignoreList)){
array_push($results[$controllerName], $action->name);
}
}
return $results;
}
Cảnh báo cho "\" trước ReflectionClass và ReflectionMethod.
Các vấn đề liên quan
- 1. Liệt kê tất cả các trò chơi
- 2. Liệt kê tất cả các nhóm thư mục hoạt động
- 3. Liệt kê tất cả các kho SVN
- 4. Psql liệt kê tất cả các bảng
- 5. Liệt kê tất cả các chỉ mục
- 6. Liệt kê tất cả virtualenv
- 7. Liệt kê tất cả các tệp trong mảng với gulp.src()
- 8. Liệt kê tất cả các trang web trong IIS C#
- 9. Liệt kê tất cả các tệp trong gói homebrew
- 10. Liệt kê tất cả các hàm dựng sẵn trong javascript?
- 11. Liệt kê tất cả các thư mục trong thư mục
- 12. Liệt kê tất cả các biến toàn cục trong Node.js
- 13. liệt kê tất cả các quy trình trong iOS 5.0.1
- 14. liệt kê tất cả các phần tử trong kênh đệm
- 15. Groovy Liệt kê tất cả các thuộc tính cho lớp
- 16. Liệt kê tất cả các bảng trong postgresql information_schema
- 17. Cách liệt kê tất cả các môi trường được xác định trong ứng dụng Rails 3?
- 18. Liệt kê tất cả các tháng sử dụng oracle sql
- 19. Git: liệt kê tất cả các tệp được theo dõi
- 20. Asp.net Mvc: Liệt kê tất cả các hành động trên bộ điều khiển với thuộc tính cụ thể
- 21. liệt kê tất cả các tệp có thuộc tính git
- 22. Liệt kê tất cả các chuỗi số nguyên hữu hạn?
- 23. Liệt kê tất cả các gói con của gói
- 24. Grep Regex: Liệt kê tất cả các dòng trừ
- 25. Liệt kê tất cả các hội đồng .NET có sẵn
- 26. Liệt kê tất cả anbom ảnh trong iOS
- 27. Liệt kê tất cả các ổ đĩa vật lý (Windows)
- 28. AppleScript - Liệt kê tất cả các phông chữ
- 29. Liệt kê tất cả các xử lý tệp đang mở?
- 30. Cách liệt kê tất cả các thuộc tính của lớp