我正在尝试在CakePHP 3.2的插件中加载路由。如果我将路由放在核心routes.php文件中,它们工作正常,但不在我的插件routes.php文件中。
插件名称为:MFC / HDParser。
路径为:/ vendor / mfc / hdparser。 (该插件最初是插入到plugins目录中,但是将其转移到vendor目录(以及更新的所有文件),以防万一出现问题。)
在核心引导程序文件中,我有:
Plugin::load('MFC/HDParser', ['bootstrap' => true, 'routes' => true, 'autoload' => true]);
/ vendor / cakephp-plugins包含以下行:
'MFC/HDParser' => $baseDir . '/vendor/mfc/hdparser/'
/composer.json包含:
"autoload": {
"psr-4": {
"App\\": "src",
"mfc\\hdparser\\": "./vendor/mfc/hdparser/src",
}
},
我的/vendor/mfc/hdparser/config/routes.php包含:
use Cake\Routing\Router;
Router::plugin(
'MFC/HDParser', ['path' => '/hdparser'], function ($routes) {
$routes->connect('/charactersheet', ['plugin' => 'MFC/HDParser', 'controller' => 'Charactersheet', 'action' => 'index']);
// $routes->connect('/:controller');
//
//$routes->resources('Charactersheet');
// $routes->fallbacks('DashedRoute');
//}
);
//Router::connect('/charactersheet', ['plugin' => 'MFC/HDParser', 'controller' => 'Charactersheet', 'action' => 'index']);
我也尝试过使用'path'=> '/ MFC / hdparser'
当我尝试访问site.dev/charactersheet时,我收到“错误:无法找到CharactersheetController。”
如果我尝试使用/ mfc / hdparser / charactersheet,/ MFC / HDParser / charactersheet或/ mfc ...,/ m_f_c ...,/ Mfc ...等路线,我会得到一个丢失的控制器( 'Mfc')错误。
如果我放线:
Router::connect('/charactersheet', ['plugin' => 'MFC/HDParser', 'controller' => 'Charactersheet', 'action' => 'index']);
在核心routes.php文件中(在作用域之外,在插件:load()之前;或者在使用$ routes-> connect()的作用域内),它可以正常工作。
我尝试使用下划线,短划线和camelcase来改变一切。
我已经挖掘了文档(http://book.cakephp.org/3.0/en/plugins.html,http://book.cakephp.org/3.0/en/development/routing.html,http://api.cakephp.org/3.2/class-Cake.Routing.Router.html)并尝试了我在那里(和此处)找到的所有内容,以及使用CakeDC / Users插件作为模板,但我仍然缺少一些东西......
- MFC
答案 0 :(得分:1)
我遇到了与CakePHP 3.3相同的问题,我的插件中的routes.php
文件未加载。
我在加载插件后添加Plugin::routes();
来修复它。此方法加载插件的所有路由,其中配置具有'routes' => true
。
E.g。
Plugin::load('MyPlugin', ['routes' => true]);
Plugin::routes();