嘿,不确定是否有人为您提供了所需的答案。我也遇到了前缀路由工作的问题。我发现所有这些解决方案,甚至 CakePHP 3.X 食谱都遗漏了一些细节。下面正是我所做的。我使用的是 3.1.3 版本。
在我添加的 routes.php 文件中
Router::prefix('admin', function ($routes) {
// All routes here will be prefixed with `/admin`
// And have the prefix => admin route element added.
$routes->connect('/', ['controller' => 'Index', 'action' => 'index']);
$routes->fallbacks('DashedRoute');
});
这是来自cookbook on prefix routing。我所做的只是将控制器从“Pages”更改为“Index”。
然后我创建了一个位于 src/Controller/Admin/IndexController.php
的控制器
我的controller的内容原来是这样的(注意这部分有误,我后来更正了)
<?php
namespace App\Controller; // INCORRECT NAMESPACE
// INCORRECTLY MISSING use Cake\Controller\AppController
use Cake\Network\Exception\NotFoundException;
use Cake\View\Exception\MissingTemplateException;
use Cake\Event\Event;
class IndexController extends AppController{
public function index(){
$this->set('title_for_layout', 'Admin Dashboard');
} // END INDEX ACTION
}
在收到“找不到类 IndexController”的错误消息后,我不得不将文件更改为以下内容。我通过阅读整个错误消息发现了这一点。这是我在食谱或您收到的任何答案中都没有看到的信息。
<?php
namespace App\Controller\Admin; // THIS IS THE CORRECT NAME SPACE
use App\Controller\AppController; // HAVE TO USE App\Controller\AppController
use Cake\Network\Exception\NotFoundException;
use Cake\View\Exception\MissingTemplateException;
use Cake\Event\Event;
class IndexController extends AppController{
public function index(){
$this->set('title_for_layout', 'Admin Dashboard');
} // END INDEX ACTION
}