cakephp3:带前缀路由的命名空间错误

时间:2016-03-08 22:04:30

标签: routes namespaces cakephp-3.x

我正在尝试使用cakephp 3实现REST api。

为了给出一个容易重现的问题示例,我先从cakephp 3.1.11的全新安装开始。 在config / routes.php中,我添加:

Router::prefix('/api', function ($routes) {
    $routes->fallbacks('DashedRoute');
});

如果我访问http://mysite/prefixtest/api/Accounts我得到(预期)"缺少控制器错误":

Error: AccountsController could not be found.

Error: Create the class AccountsController below in file: src/Controller//Api/AccountsController.php

<?php
namespace App\Controller\\Api;

use App\Controller\AppController;

class AccountsController extends AppController
{

}

注意路径中的双斜线和命名空间中的双反斜杠。

使用建议的代码在src/Controller/Api/AccountsController.php(路径中的单个/)中创建AccountsController会导致错误:

Error: syntax error, unexpected '\' (T_NS_SEPARATOR), expecting identifier (T_STRING)
File src/Controller/Api/AccountsController.php
Line: 2 

不太令人惊讶,因为在php中不允许命名空间中的双反斜杠。 删除额外的反斜杠会让我回到&#34;缺少控制器错误&#34;,可能因为控制器不在cakephp所期望的命名空间中。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

与范围或路由相反,前缀不应与前导斜杠相关联。

另请参阅 Cookbook > Routing > Prefix Routing