Cakephp 3:插件以前缀为根

时间:2016-07-28 12:37:07

标签: cakephp routing cakephp-3.0

我遇到路由问题。我有一个插件但我无法连接前缀中的路由。

插件url:/ plugin-name / test:调用TestController in" pluginsName / TestController.php"

我不想 / myprefix / plugin-name / test:在" pluginsName / TestController.php中调用TestController

我的不同测试:

<?php
Router::prefix('myprefix', function ($routes) {
    // Call TestController in my plugin but in "pluginsName/Api/TestController.php"
    $routes->connect('/plugin-name/test', ['plugin' => 'PluginName', 'controller' => 'Test', 'action' => 'display']);

    // Error
    $routes->connect('/plugin-name/test', ['plugin' => 'PluginName', 'controller' => 'Test', 'action' => 'display', 'prefix'=>false]);

     Not work
     $routes->plugin('PluginName', function($routes) {
         $routes->connect('/test', ['controller' => 'Test', 'action' => 'display']);
       });

});

你有解决方案吗?

1 个答案:

答案 0 :(得分:0)

试试这个。应该工作。

Router::plugin('Contacts', ['_namePrefix' => 'contacts:'], function ($routes) {
    $routes->scope('/api', ['_namePrefix' => 'api:'], function ($routes) {
        // This route's name will be `contacts:api:ping`
        $routes->connect('/ping', ['controller' => 'Pings'], ['_name' => 'ping']);
    });
});

它会生成,URL /contacts/api/ping将使用ping控制器重定向到Contacts插件。

例如:

 Router::plugin('Contacts', ['_namePrefix' => 'contacts:'], function ($routes) {  
        // This route's name will be `contacts:ping`
        $routes->connect('/ping', ['controller' => 'Pings'], ['_name' => 'ping']);

});

它将重定向到Contact插件和Pings控制器,如/contacts/ping