Cake php 4 Url-> build с массивом, выбрасывает маршрут, ошибка не найдена, но не со строкой - PullRequest
1 голос
/ 08 января 2020

Я пытаюсь настроить торт php 4 с префиксной маршрутизацией. У меня дома. php, у меня настроен следующий код (с фокусом на теге html a 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 } ?>

Мои маршруты. php, внизу часть, после всего остального, автоматически сгенерированного тортом php.

$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);
});

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

В любом случае, когда я запускаю код, я сразу получаю сообщение об ошибке «маршрут не найден»:

Массив соответствия маршрута ('prefix' => 'serve', 'controller' => 'TrainingsUsers', 'action '=>' add ',' plugin '=> NULL,' _ext '=> NULL,) "не удалось найти.

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

Странная вещь, когда я изменяю из массива в 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>

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

Я что-то здесь упускаю?

Я только что вспомнил. Я нахожусь на пироге php 4.0.1

Я думаю, что это соответствующая информация из моего error.log. Мой 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"} |
+-------------------------------------+-------------------------------------------+----------------------------------------------------------------------------------+
...