2016-04-05 40 views
0

我試圖在CakePHP 3.2的插件中加載路由。他們工作得很好,如果我把路線放在覈心routes.php文件中,但不在我的插件routes.php文件中。CakePHP 3插件路由似乎並未加載

插件名稱是:MFC/HDParser。

路徑是:/ vendor/mfc/hdparser。 (該插件最初烤成的插件目錄,但它轉移到供應商目錄(和所有的文件更新)只是這是問題的情況下。)

在覈心引導文件我有:

Plugin::load('MFC/HDParser', ['bootstrap' => true, 'routes' => true, 'autoload' => true]); 

/供應商/ cakephp中-插件包含行:

'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']); 

我還用 '路徑' 嘗試=> '/ 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文件文件

(範圍之外,插件之前:負載();或範圍內使用$ routes->連接())它工作正常。

我已經嘗試使用下劃線,破折號和camelcase幾乎所有的變化。

我已經通過文件挖(http://book.cakephp.org/3.0/en/plugins.htmlhttp://book.cakephp.org/3.0/en/development/routing.htmlhttp://api.cakephp.org/3.2/class-Cake.Routing.Router.html),並嘗試了所有我能找到有(在這裏),以及使用CakeDC /用戶插件爲模板,但我仍然失去了一些東西...

--MFC

+0

我已經臨時添加了:'$ routes-> connect('/:controller'); \t $ routes-> connect('/:controller /:action/*');'給我的/config/routes.php文件。它有效,但它不能解決問題。 –

回答

1

我有同樣的問題與CakePHP的3.3,在routes.php文件在我的插件沒有加載。

我在加載我的插件後通過放入Plugin::routes();來修復它。此方法加載所有插件的路由,其中​​配置有'routes' => true

E.g.

Plugin::load('MyPlugin', ['routes' => true]); 
Plugin::routes();