Cakephp 3.6中缺少插件的控制器

时间:2018-07-19 16:16:34

标签: cakephp controller cakephp-3.x

我烘烤了一个插件并手动创建了一个控制器,该控制器正在本地服务器上运行,但是当我将插件移过并点击url蛋糕时,该控制器不在插件控制器位置,即plugins / TourPackages / src / Controller /TourPackagesController.php文件存在于该位置,但仍表示缺少控制器。我附上了它的屏幕截图。我创建的其他插件面临此问题。 location of file

Error for missing controller

1 个答案:

答案 0 :(得分:0)

我想这是路由问题,我尝试了插件名称和控制器名称的URL的多种组合。

做了什么 在View(.ctp)

 <?php echo $this->Html->link('<h3>Package Name</h3>', ['controller'=>'TourPackages', 'plugin'=>'TourPackages', 'action'=>'sample'], ['title'=>'Package Name', 'class'=>'', 'escape'=>false]);?>

生成类似<a href="http://demos.cybershines.com/naturessprout/tour-packages/tour-packages/sample" title="Package Name" class=""><h3>Package Name</h3></a>

的html

在“我的插件路由器”中,路由代码为 Router::plugin( 'TourPackages', ['path' => '/tour-packages'], function (RouteBuilder $routes) { $routes->fallbacks(DashedRoute::class); } ); 我将其更改为

Router::plugin(
'TourPackages',
['path' => '/tour-packages'],
function (RouteBuilder $routes) {
    $routes->get('/tour-packages/tour-packages/*', ['controller' => 'TourPackages']);
    $routes->fallbacks(DashedRoute::class);
}

); 它为插件使用“路径” / tour-packages,但控制器为“ TourPackages” 因此当我按下http://demos.cybershines.com/naturessprout/tour-packages/TourPackages/sample蛋糕时,我将带到正确的位置并查看。因此,我通过添加修改了路由代码  $routes->get('/tour-packages/tour-packages/*', ['controller' => 'TourPackages']); 在routing.php中,告诉cake对游览包执行TourPackagesController。