Zend Framework3 конфликт аналогичных маршрутов - PullRequest
0 голосов
/ 29 января 2019

Я использую ZF3, в module.config.php файл в модуле Post, у меня есть один из этих двух маршрутов,

'create-post' => [
    'type' => Literal::class,
    'options' => [
        // Change this to something specific to your module
        'route' => '/post/create',
        'defaults' => [
            'controller' => Controller\PostController::class,
            'action' => 'create',
        ]
    ],
    'may_terminate' => true,
    'child_routes' => [
        // You can place additional routes that match under the
        // route defined above here.
    ],
],

'post' => [
    'type' => Segment::class,
    'options' => [
        // Change this to something specific to your module
        'route' => '/post[/:postId]',
        'defaults' => [
            'controller' => Controller\PostController::class,
            'action' => 'show',
        ],
        'constraints' => array(
            'postId' => '\d{4}'
        )
    ],
    'may_terminate' => true,
    'child_routes' => [
        // You can place additional routes that match under the
        // route defined above here.
    ],
]

Теперь, когда я посещаю http://localhost:8080/post/create это работает, но когда я посещаю http://localhost:8080/post/32,, это не работает.Там написано 404 ошибка, страница не найдена.

Любая помощь очень ценится.

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Согласно комментарию @jon Stirling к моему вопросу, я изменил ограничения на пост-маршрут, и это сработало.

Изменил 'postId' => '\ d {4}' на 'postId' => '\ d {1,4}'

'post' => [
                'type'    => Segment::class,
                'options' => [
                    // Change this to something specific to your module
                    'route'    => '/post[/:postId]',
                    'defaults' => [
                        'controller'    => Controller\PostController::class,
                        'action'        => 'show',
                    ],
                    'constraints' => array(
                        'postId' => '\d{1,4}'
                    )
                ],
                'may_terminate' => true,
                'child_routes' => [
                    // You can place additional routes that match under the
                    // route defined above here.
                ],
            ]
0 голосов
/ 29 января 2019

Почему вы хотите иметь два действия на одном маршруте?

Если это REST, у вас должен быть метод POST для / post (для действия создания) и метод GET для / post [/: id] (для действия show).

В противном случае вы можете иметь post / create и /post/show/[/:id].

...