Область действия маршрутизатора портит конструктор URL - PullRequest
0 голосов
/ 30 октября 2019

В моем приложении я определил область для вызовов API.

Router::scope('/api', function (RouteBuilder $routes) {
    $routes->setExtensions(['json']);
    $routes->resources('Invoices');
});

Я хочу обслуживать /api/invoices и /invoices из одного и того же метода контроллера.

В моем default.ctp layout У меня есть следующая ссылка.

<?= $this->Html->link(
   '<i class="fi-book"> ' . __('Invoices') . '</i>',
   [
      'plugin' => false,
      'prefix' => false,
      'controller' => 'invoices',
      'action' => 'index'
   ],
   ['escape' => false]
) ?>

И это дает мне /api/invoices, что не так, поскольку мне не нужен префикс /api здесь.

Однако следующая ссылка:

<?= $this->Html->link(
   '<i class="fi-plus"> ' . __('New Invoice') . '</i>',
   [
      'plugin' => false,
      'prefix' => false,
      'controller' => 'invoices',
      'action' => 'add'
   ],
   ['escape' => false]
) ?>

генерирует /invoices/add. Теперь есть префикс /api, каково желаемое поведение.

Что мне не хватает?

...