Я довольно озадачен тем, какую версию CakePHP вы используете (вы пометили cakephp-3.0, а структура папок, о которой вы говорили, похожа на версию 2.x), но обе версии 2.x и 3.x имеют общую концепцию, называемуюПрефикс маршрутизации, который вы должны использовать здесь.В приведенном ниже примере предполагается, что CakePHP 3.x:
Вам необходимо создать каталоги (v1, v2) внутри каталога Controller.Затем создайте отдельные контроллеры в этой папке, помня, что пространство имен также должно отражать эту структуру:
<?php
namespace App\Controller\v1;
use App\Controller\AppController;
class UsersController extends AppController {
//...
}
Последний шаг - настроить маршрутизацию в вашем rout.php.Пример ниже:
Router::prefix("v1", function (RouteBuilder $routes){
$routes->fallbacks(DashedRoute::class);
});
Более подробную информацию можно найти здесь: Маршрутизация префикса
Для CakePHP 2.x все немного по-другому:
В v2.x вам НЕ следует создавать папки внутри директории Controller.Все префиксные и нефиксированные функции будут находиться на одном контроллере, например.
class UsersController extends AppController {
/**
* Unprefixed function
*/
public function login(){
}
/**
* Prefix v1
*/
public function v1_login(){
}
/**
* Prefix v2
*/
public function v2_login(){
}
}
Далее вам необходимо настроить эти префиксы в файле app / Config / core.php следующим образом:
Configure::write('Routing.prefixes', array('v1', 'v2'));
После этого вы сможете получить доступ к своим действиям с префиксами v1 и v2, например, yourapp/v1/users/login
отобразится на UsersController::v1_login()
и yourapp/v2/users/login
на UsersController::v2_login()
.
Более подробная информация в документации для 2.x: Префиксная маршрутизация v2.x