我实际上是在测试CakePHP3,我不知道如何管理,使用Cake 2,在Core中我们可以编写
Configure::write('Routing.prefixes', array('admin'));
但是对于CakePHP3,我们没有Core,在文档中我找不到这段代码!我尝试了路由
Router::prefix('admin', function ($routes) {
//My route
$routes->fallbacks('InflectedRoute');
});
但没有成功!
答案 0 :(得分:12)
三个步骤:
在config/routes.php
中:将以下内容添加到文件末尾:
Router::prefix('Admin', function ($routes) {
$routes->fallbacks('InflectedRoute');
});
创建src/Controller/Admin
并将您的UsersController.php
文件(在高级Controller
中以其他方式创建)移动到其中。在<?php
开始标记
namespace App\Controller\Admin;
创建视图。
创建一个Template/Users/Admin
文件夹并将所有add.ctp,edit.ctp,view.ctp文件转储到其中。
Admin前缀将用于指代admin部分。如果您想要不同的前缀,请替换Admin
。
我刚发现这是目前最好的方法。如果有人有更好的方法,请分享。
答案 1 :(得分:2)
在cakephp 3.x中改变路由概念,
Configure::write('Routing.prefixes', array('admin'));
如果你想用它,
请在您的控制器文件夹中创建一个admin文件夹,并在此文件夹中写入相同的名称控制器名称。
如果你想admin_index()
函数像2.x那么你只在管理文件夹控制器中写index()
函数。
注意一件事,在router.php
中添加此代码
Router::prefix('admin', function ($routes) {
//My route
$routes->fallbacks('InflectedRoute');
});
答案 2 :(得分:2)
我找到了管理员前缀的解决方案。请查看以下代码:
在 app / config / routes.php
中Router::prefix('admin', function($routes) {
$routes->connect('/', ['controller'=>'Users','action'=>'login']);
$routes->fallbacks('InflectedRoute');
});
在Controller中创建Admin文件夹 src: src / Controller / Admin / UsersController.php
在UsersController.php中添加这行代码
namespace App\Controller\Wcbadmin;
现在制作视图文件: 的的src /模板/管理员/用户/ login.ctp 强>
答案 3 :(得分:1)
嘿,不确定是否有人能得到你需要的答案。我也遇到了使前缀路由工作的问题。我发现所有这些解决方案,甚至是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');
});
这来自in the template。我改变的只是将控制器从“Pages”更改为“Index”。
然后我创建了一个位于 src / Controller / Admin / IndexController.php的控制器
我的控制器的内容原本是这样的(注意这部分不正确,我之后再纠正)
<?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
}