我遇到路由问题。我有一个插件但我无法连接前缀中的路由。
插件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']);
});
});
你有解决方案吗?
答案 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
。