首先,我在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中做同样的事情呢?
答案 0 :(得分:3)
正如在这里写的cakephp文档:http://book.cakephp.org/3.0/en/appendices/3-0-migration-guide.html#configuration,App::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
,然后阅读我已链接的手册的整个部分即可。