Я использую плагин TinyAuth с моим Cakephp3.У меня есть контроллер со следующим пространством имен:
namespace App\Controller\Api\Datatables;
Контроллер - это списки, а моя функция - Фильтр
У меня есть следующие настройки маршрута:
Router::scope('/datatables', ['prefix' => 'api/datatables'], function (RouteBuilder $routes) {
$routes->extensions(['json', 'xml', 'ajax']);
$routes->fallbacks(DashedRoute::class);
});
Этопозволяет мне вызывать следующий URL:
/datatables/listings/filter.json
Я хочу разрешить функцию фильтра:
datatables/Listings = filter
Когда я вызываю свой URL, я перенаправляюсь на страницу входа.Если я вхожу в систему, URL работает, поэтому allow_auth работает.
Я также попробовал следующее:
api/datatables/Listings = filter
api/Datatables/Listings = filter
Api/Datatables/Listings = filter
api/datatables/Listings = filter
datatables/Listings = filter
Datatables/Listings = filter
api/Listings = filter
Независимо от того, какой путь не разрешен.Если я переместлю контроллер в положение по умолчанию, то в allow_auth:
Listings = filter
функция фильтра будет доступна без авторизации.Это говорит о том, что существует проблема с плагином при использовании области действия маршрутизатора.
Вот плагин composer.json
{
"name": "ypnos-web/cakephp-datatables",
"description": "jQuery DataTables for CakePHP 3",
"homepage": "https://github.com/ypnos-web/cakephp-datatables",
"type": "cakephp-plugin",
"keywords": ["cakephp", "datatables"],
"license": "MIT",
"authors": [
{
"name": "Frank Heider",
"homepage": "https://github.com/fheider",
"role": "Author"
},
{
"name": "Johannes Jordan",
"homepage": "https://github.com/ypnos-web",
"role": "Author"
}
],
"require": {
"php": ">=7.0",
"cakephp/cakephp": "^3.6"
},
"autoload": {
"psr-4": {
"DataTables\\": "src"
}
},
"autoload-dev": {
"psr-4": {
"DataTables\\Test\\": "tests",
"Cake\\Test\\": "./vendor/cakephp/cakephp/tests"
}
}
}
Правильно ли я утверждаю, что урезанные маршруты работают дляacl.ini - они, кажется, насколько я могу видеть.
Я использую сокращенные маршруты для лучшей организации своих функций.
Мои параметры запроса следующие, когда я вызываю /datatables/listings/filter.json?
'controller' => 'Listings',
'action' => 'filter',
'pass' => [],
'prefix' => 'api/datatables',
'plugin' => null,
'_ext' => 'json',
'_matchedRoute' => '/datatables/:controller/:action/*',
'?' => [
'string' => 'seat'
]
Если я позвоню /api/datatables/listings/filter.json:
Не удается найти Datatables класса контроллера.