cakephp 3.6 中的插件缺少控制器
Missing Controller for a plugin in cakephp 3.6
我烘焙了一个插件并手动创建了一个控制器,它在我的本地服务器上运行,但是,当我移动插件并点击 url 蛋糕说控制器在插件控制器位置丢失,即 plugins/TourPackages/src/Controller/TourPackagesController.php 该文件存在于该位置,但它仍然说缺少控制器。我附上它的屏幕截图。对于我创建的其他插件,我正面临这个问题。
我想这是路由问题我已经尝试了 URL 插件名称和控制器名称的多种组合。
做了什么
在视图中 (.ctp)
<?php echo $this->Html->link('<h3>Package Name</h3>', ['controller'=>'TourPackages', 'plugin'=>'TourPackages', 'action'=>'sample'], ['title'=>'Package Name', 'class'=>'', 'escape'=>false]);?>
生成 html 就像 <a href="http://demos.cybershines.com/naturessprout/tour-packages/tour-packages/sample" title="Package Name" class=""><h3>Package Name</h3></a>
在我的插件路由器中,路由代码是
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);
}
);
它采用 "path" /tour-packages 作为插件,但控制器作为 "TourPackages"
所以当我点击 http://demos.cybershines.com/naturessprout/tour-packages/TourPackages/sample 时,蛋糕会将我带到正确的位置和视图。所以,我通过添加修改了路由代码
$routes->get('/tour-packages/tour-packages/*', ['controller' => 'TourPackages']);
在 routing.php 中并告诉蛋糕为旅游套餐执行 TourPackagesController。
我烘焙了一个插件并手动创建了一个控制器,它在我的本地服务器上运行,但是,当我移动插件并点击 url 蛋糕说控制器在插件控制器位置丢失,即 plugins/TourPackages/src/Controller/TourPackagesController.php 该文件存在于该位置,但它仍然说缺少控制器。我附上它的屏幕截图。对于我创建的其他插件,我正面临这个问题。
我想这是路由问题我已经尝试了 URL 插件名称和控制器名称的多种组合。
做了什么 在视图中 (.ctp)
<?php echo $this->Html->link('<h3>Package Name</h3>', ['controller'=>'TourPackages', 'plugin'=>'TourPackages', 'action'=>'sample'], ['title'=>'Package Name', 'class'=>'', 'escape'=>false]);?>
生成 html 就像 <a href="http://demos.cybershines.com/naturessprout/tour-packages/tour-packages/sample" title="Package Name" class=""><h3>Package Name</h3></a>
在我的插件路由器中,路由代码是
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);
}
);
它采用 "path" /tour-packages 作为插件,但控制器作为 "TourPackages"
所以当我点击 http://demos.cybershines.com/naturessprout/tour-packages/TourPackages/sample 时,蛋糕会将我带到正确的位置和视图。所以,我通过添加修改了路由代码
$routes->get('/tour-packages/tour-packages/*', ['controller' => 'TourPackages']);
在 routing.php 中并告诉蛋糕为旅游套餐执行 TourPackagesController。