Cakephp 4 Url-> build с массивом выдает ошибку route not found, но не со строкой

Я пытаюсь настроить cakephp 4 с префиксной маршрутизацией. В моем home.php у меня настроен следующий код (с акцентом на тег html и href в разделе "Служебные"):

<?php if ($prefix == 'serving' || $prefix == 'admin') {?>
<div class="row">
    <div class="column">
        <h4>Serving Ones</h4>
        <ul>
            <li class="bullet success">
                <a href=<?php echo $this->Url->build(['prefix' => 'serving', 'controller' => 'TrainingsUsers', 'action' => 'add']); ?>>Process Registrations</a>
                <?php /**<a href=<?php echo $this->Url->build('/serving/TrainingsUsers/process'); ?>>Process Registrations</a>**/?>
            </li>
        </ul>
    </div>
    <div class="column">
        <h4>Administration</h4>
        <ul>
            <li class="bullet success">
                Add/Edit Current Training
            </li>
        </ul>
    </div>
</div>
<hr>
<?php } ?>

Мой routes.php, нижняя часть, после всего остального, автоматически сгенерированный cakephp.

$routes->prefix('admin' , function (RouteBuilder $admin_routes) {
    //$admin_routes->connect('/',['controller' => 'Pages', 'action' => 'display', 'home']);
    //$admin_routes->connect('/users/:action',['controller' => 'Users', 'action' => 'index']);

    //$admin_routes->connect('/TrainingsUsers/add',['controller' => 'TrainingsUsers', 'action' => 'add']);

    //$admin_routes->fallbacks(DashedRoute::class);
    $admin_routes->fallbacks(InflectedRoute::class);
});

$routes->prefix('serving' , function (RouteBuilder $serving_routes) {

    //$serving_routes->connect(':controller/:action');

    $serving_routes->connect('/TrainingsUsers/add',['controller' => 'TrainingsUsers', 'action' => 'add']);

    $serving_routes->fallbacks(DashedRoute::class);
    //$serving_routes->fallbacks(InflectedRoute::class);
});

Я добавил этот маршрут под префиксом "обслуживающий", в котором конкретно упоминаются контроллер и действие.

В любом случае, когда я запускаю код, я сразу получаю ошибку route not found:

Сопоставление маршрута "array ( 'prefix' => 'serv', 'controller' => 'TrainingsUsers', 'action' => 'add', 'plugin' => NULL, '_ext' => NULL,)" может не найти.

Я огляделся и попытался просмотреть документацию (я все еще не знаком с cakephp), но не мог понять, почему это происходит. Я понимаю, что резервный маршрут по умолчанию должен улавливать эту комбинацию контроллер / действие, но это не так. Даже когда я настраиваю добавление маршрута (при условии, что я сделал это правильно), он все равно говорит, что не найден.

Странно то, что когда я перехожу из массива в Url::build:

<a href=<?php echo $this->Url->build(['prefix' => 'serving', 'controller' => 'TrainingsUsers', 'action' => 'add']); ?>>Process Registrations</a>

использовать строку в аргументах:

<a href=<?php echo $this->Url->build('/serving/TrainingsUsers/add'); ?>>Process Registrations</a>

оно работает. на странице ошибки в разделе "Подключенные маршруты"

Я что-то упустил?

Я только что вспомнил. Я на Cakephp 4.0.1

Думаю, это актуальная информация из моего журнала ошибок. В моем журнале debug.log ничего не отображается.

2020-01-07 12:58:55 Error: [Cake\Routing\Exception\MissingRouteException] A route matching "array (
  'prefix' => 'serving',
  'controller' => 'TrainingsUsers',
  'action' => 'add',
  'plugin' => NULL,
  '_ext' => NULL,
)" could not be found. in C:\xampp\htdocs\cake4\psrp\vendor\cakephp\cakephp\src\Routing\RouteCollection.php on line 341
Exception Attributes: array (
  'url' => 'array (
  \'prefix\' => \'serving\',
  \'controller\' => \'TrainingsUsers\',
  \'action\' => \'add\',
  \'plugin\' => NULL,
  \'_ext\' => NULL,
)',
  'context' => 
  array (
    '_scheme' => 'http',
    '_host' => 'localhost',
    '_port' => NULL,
    '_base' => '/cake4/psrp',
    'params' => 
    array (
      'pass' => 
      array (
        0 => 'home',
      ),
      'controller' => 'Pages',
      'action' => 'display',
      'plugin' => NULL,
      '_matchedRoute' => '/',
      '_ext' => NULL,
    ),
  ),
)
Stack Trace:
- C:\xampp\htdocs\cake4\psrp\vendor\cakephp\cakephp\src\Routing\Router.php:494
- C:\xampp\htdocs\cake4\psrp\vendor\cakephp\cakephp\src\View\Helper\UrlHelper.php:51
- C:\xampp\htdocs\cake4\psrp\templates\Pages\home.php:75
- C:\xampp\htdocs\cake4\psrp\vendor\cakephp\cakephp\src\View\View.php:1164
- C:\xampp\htdocs\cake4\psrp\vendor\cakephp\cakephp\src\View\View.php:1125
- C:\xampp\htdocs\cake4\psrp\vendor\cakephp\cakephp\src\View\View.php:750
- C:\xampp\htdocs\cake4\psrp\vendor\cakephp\cakephp\src\Controller\Controller.php:691
- C:\xampp\htdocs\cake4\psrp\src\Controller\PagesController.php:97
- C:\xampp\htdocs\cake4\psrp\vendor\cakephp\cakephp\src\Controller\Controller.php:524
- C:\xampp\htdocs\cake4\psrp\vendor\cakephp\cakephp\src\Controller\ControllerFactory.php:79
- C:\xampp\htdocs\cake4\psrp\vendor\cakephp\cakephp\src\Http\BaseApplication.php:229
- C:\xampp\htdocs\cake4\psrp\vendor\cakephp\cakephp\src\Http\Runner.php:77
- C:\xampp\htdocs\cake4\psrp\vendor\cakephp\authentication\src\Middleware\AuthenticationMiddleware.php:122
- C:\xampp\htdocs\cake4\psrp\vendor\cakephp\cakephp\src\Http\Runner.php:73
- C:\xampp\htdocs\cake4\psrp\vendor\cakephp\cakephp\src\Http\Runner.php:77
- C:\xampp\htdocs\cake4\psrp\vendor\cakephp\cakephp\src\Http\Middleware\CsrfProtectionMiddleware.php:132
- C:\xampp\htdocs\cake4\psrp\vendor\cakephp\cakephp\src\Http\Runner.php:73
- C:\xampp\htdocs\cake4\psrp\vendor\cakephp\cakephp\src\Http\Runner.php:58
- C:\xampp\htdocs\cake4\psrp\vendor\cakephp\cakephp\src\Routing\Middleware\RoutingMiddleware.php:162
- C:\xampp\htdocs\cake4\psrp\vendor\cakephp\cakephp\src\Http\Runner.php:73
- C:\xampp\htdocs\cake4\psrp\vendor\cakephp\cakephp\src\Routing\Middleware\AssetMiddleware.php:68
- C:\xampp\htdocs\cake4\psrp\vendor\cakephp\cakephp\src\Http\Runner.php:73
- C:\xampp\htdocs\cake4\psrp\vendor\cakephp\cakephp\src\Error\Middleware\ErrorHandlerMiddleware.php:118
- C:\xampp\htdocs\cake4\psrp\vendor\cakephp\cakephp\src\Http\Runner.php:73
- C:\xampp\htdocs\cake4\psrp\vendor\cakephp\debug_kit\src\Middleware\DebugKitMiddleware.php:60
- C:\xampp\htdocs\cake4\psrp\vendor\cakephp\cakephp\src\Http\Runner.php:73
- C:\xampp\htdocs\cake4\psrp\vendor\cakephp\cakephp\src\Http\Runner.php:58
- C:\xampp\htdocs\cake4\psrp\vendor\cakephp\cakephp\src\Http\Server.php:90
- C:\xampp\htdocs\cake4\psrp\webroot\index.php:40

Request URL: /
Referer URL: http://localhost/cake4/psrp/login?redirect=%2Fcake4%2Fpsrp%2F

заранее спасибо

РЕДАКТИРОВАТЬ: маршруты bin/cake генерируются (только левый столбец):

+-------------------------------------+-------------------------------------------+----------------------------------------------------------------------------------+
| Route name                          | URI template                              | Defaults                                                                         |
+-------------------------------------+-------------------------------------------+----------------------------------------------------------------------------------+
| pages:display                       | /                                         | {"0":"home","action":"display","controller":"Pages","plugin":null}               |
| pages:display                       | /pages/*                                  | {"action":"display","controller":"Pages","plugin":null}                          |
| login                               | /login                                    | {"action":"login","controller":"Users","plugin":null}                            |
| logout                              | /logout                                   | {"action":"logout","controller":"Users","plugin":null}                           |
| _controller:index                   | /{controller}                             | {"action":"index","plugin":null}                                                 |
| _controller:_action                 | /{controller}/{action}/*                  | {"action":"index","plugin":null}                                                 |
| admin:_controller:index             | /admin/{controller}                       | {"action":"index","plugin":null,"prefix":"Admin"}                                |
| admin:_controller:_action           | /admin/{controller}/{action}/*            | {"action":"index","plugin":null,"prefix":"Admin"}                                |
| serving:trainingsusers:_action      | /serving/TrainingsUsers/:action/*         | {"action":"add","controller":"TrainingsUsers","plugin":null,"prefix":"Serving"}  |
| serving:_controller:index           | /serving/{controller}                     | {"action":"index","plugin":null,"prefix":"Serving"}                              |
| serving:_controller:_action         | /serving/{controller}/{action}/*          | {"action":"index","plugin":null,"prefix":"Serving"}                              |
| debugkit.toolbar:clearcache         | /debug-kit/toolbar/clear-cache            | {"action":"clearCache","controller":"Toolbar","plugin":"DebugKit"}               |
| debugkit.requests:view              | /debug-kit/toolbar/*                      | {"action":"view","controller":"Requests","plugin":"DebugKit"}                    |
| debugkit.panels:view                | /debug-kit/panels/view/*                  | {"action":"view","controller":"Panels","plugin":"DebugKit"}                      |
| debugkit.panels:index               | /debug-kit/panels/*                       | {"action":"index","controller":"Panels","plugin":"DebugKit"}                     |
| debugkit.composer:checkdependencies | /debug-kit/composer/check-dependencies    | {"action":"checkDependencies","controller":"Composer","plugin":"DebugKit"}       |
| debugkit.mailpreview:index          | /debug-kit/mail-preview                   | {"action":"index","controller":"MailPreview","plugin":"DebugKit"}                |
| debugkit.mailpreview:email          | /debug-kit/mail-preview/preview           | {"action":"email","controller":"MailPreview","plugin":"DebugKit"}                |
| debugkit.mailpreview:email          | /debug-kit/mail-preview/preview/*         | {"action":"email","controller":"MailPreview","plugin":"DebugKit"}                |
| debugkit.mailpreview:sent           | /debug-kit/mail-preview/sent/{panel}/{id} | {"action":"sent","controller":"MailPreview","plugin":"DebugKit"}                 |
| debugkit.dashboard:index            | /debug-kit                                | {"_method":"GET","action":"index","controller":"Dashboard","plugin":"DebugKit"}  |
| debugkit.dashboard:index            | /debug-kit/dashboard                      | {"_method":"GET","action":"index","controller":"Dashboard","plugin":"DebugKit"}  |
| debugkit.dashboard:reset            | /debug-kit/dashboard/reset                | {"_method":"POST","action":"reset","controller":"Dashboard","plugin":"DebugKit"} |
+-------------------------------------+-------------------------------------------+----------------------------------------------------------------------------------+

0 ответов

Другие вопросы по тегам