/** * Test reading controller files from src/Controllers/Api-prefix * * @return void */ public function testGetApiControllers() { // We use our own directory Configure::write('App++.Api.prefix', $this->apiFolderName); // Test lookup in non-existent folder Configure::write('App++.Api.prefix', $this->apiFolderName); $res = PlusPlus::getApiControllers(); $this->assertFalse($res); // Test lookup in empty folder mkdir($this->apiFolderPath, 0777, true); $res = PlusPlus::getApiControllers(); $this->assertFalse($res); // Test lookup in folder without existing cache touch($this->apiFolderPath . DS . 'UsersController.php'); touch($this->apiFolderPath . DS . 'ArticlesController.php'); touch($this->apiFolderPath . DS . 'BlogsDifferentType.php'); $expected = ['Articles', 'Users']; $res = PlusPlus::getApiControllers(); $this->assertEquals($expected, $res); // Test cached results unlink($this->apiFolderPath . DS . 'UsersController.php'); $expected = ['Articles', 'Users']; $res = PlusPlus::getApiControllers(); }
use Alt3\AppPlusPlus\Lib\PlusPlus; use Cake\Core\Configure; use Cake\Routing\Router; pr("Plugin routes"); /** * Connect /api/users/login to /users/login to keep the API entrance consistent. */ Router::connect('/api/users/login', ['controller' => 'Accounts', 'action' => 'login', 'prefix' => null], ['routeClass' => 'InflectedRoute']); /** * Here we set up the /api prefixed route */ Router::prefix(Configure::read('App++.Api.prefix'), function ($routes) { // enable .json and/or .xml extension $routes->extensions(Configure::read('App++.Api.extensions')); // mapResources for all Controller files found in /src/Controller/Api $controllers = PlusPlus::getApiControllers(); if ($controllers) { foreach ($controllers as $controller) { $routes->resources($controller); } } }); /** * Example => /admin prefix route */ // Router::prefix('admin', function ($routes) { // $routes->fallbacks('InflectedRoute'); // }); /** * Here we override the / scope in routes.php so we can connect some * AppPlusPlus specific routes if needed.