Я использую плагин Friends of Cake CRUD для своего внутреннего API.Я также использую префиксы API для своих маршрутов:
Router::prefix('Api', function ($routes) {
$routes->extensions(['json', 'xml', 'ajax']);
$routes->resources('Messages');
$routes->resources('ReportedListings');
$routes->fallbacks('InflectedRoute');
});
Пока все хорошо.Мой контроллер выглядит следующим образом:
namespace App\Controller\Api;
use App\Controller\AppController;
use Cake\Event\Event;
use Cake\Core\Exception\Exception;
class MessagesController extends AppController {
use \Crud\Controller\ControllerTrait;
public function initialize() {
parent::initialize();
$this->loadComponent(
'Crud.Crud', [
'actions' => [
'Crud.Add',
'update' => ['className' => 'Crud.Edit']
],
'listeners' => ['Crud.Api'],
]
,'RequestHandler'
);
$this->Crud->config(['listeners.api.exceptionRenderer' => 'App\Error\ExceptionRenderer']);
$this->Crud->addListener('relatedModels', 'Crud.RelatedModels');
}
public function beforeFilter(Event $event){
parent::beforeFilter($event);
}
public function add() {
return $this->Crud->execute();
}
Когда я звоню следующим образом:
[POST] /api/messages.json
Я получаю ошибку:
Action MessagesController::index() could not be found, or is not accessible.
Вместо этого я использую:
[POST] /messages.json
Я не получаю сообщение об ошибке и могу добавить сообщение.Итак, вопрос в том, почему с моей маршрутизацией префикса API CRUD ищет индекс и как мне избежать этого поведения?