App :: build in CakePHP 3

时间:2015-05-04 10:59:08

标签: cakephp cakephp-3.0

首先,我在cakephp中非常新。在版本2.x中,它允许App :: build在指定的文件夹中指定控制器。例如:

 Stream<Person> people = Stream.of(new Person("Paul", 24), new Person("Mark",30), new Person("Will", 28));
 Map<Integer, List<String>> peopleByAge = people
.collect(groupingBy(p -> p.age, mapping((Person p) -> p.name, toList())));
 System.out.println(peopleByAge);

但是在cakephp3.x中,App :: build不再可用。那么我怎么能在cakephp3.x中做同样的事情呢?

2 个答案:

答案 0 :(得分:3)

正如在这里写的cakephp文档:http://book.cakephp.org/3.0/en/appendices/3-0-migration-guide.html#configurationApp::build不再是cakephp3的一部分。

因此,您必须为cakephp自动加载器(使用作曲家)进行特定配置:

"autoload": {
    "psr-4": {
        "App\\Controller\\": "/path/to/directory/with/controller/folders"
    }
}

有关此配置的详细信息:http://book.cakephp.org/3.0/en/development/configuration.html#additional-class-paths

有关作曲家自动加载器的更多信息: https://getcomposer.org/doc/01-basic-usage.md#autoloading

答案 1 :(得分:2)

App::build已被删除,但您可以使用Cake3中的prefix routing完成所需操作。这正是您尝试解决的问题。取自文档:

  

前缀映射到应用程序的Controller名称空间中的子命名空间。通过将前缀作为单独的控制器,您可以创建更小更简单的控制器。可以使用继承,组件或特征来封装前缀和非前缀控制器通用的行为。使用我们的用户示例,访问网址/admin/users/edit/5会将我们edit()的{​​{1}}方法调用为第一个参数。使用的视图文件为src/Controller/Admin/UsersController.php

只需将src/Template/Admin/Users/edit.ctp替换为示例中的admin,然后阅读我已链接的手册的整个部分即可。