gpt4 book ai didi

php - ZF2 子路由中的可选路由约束

转载 作者:可可西里 更新时间:2023-11-01 13:13:35 26 4
gpt4 key购买 nike

我在一条 route 遇到一个可选约束的问题,该路线在其子项中是非可选的。我的路由结构如下:

'profile' => [
'type' => 'segment',
'options' => [
'route' => '/profile[/:id]',
'constraints' => ['id' => '[0-9]*'],
'defaults' => [
'controller' => 'User\Controller\User',
'action' => 'profile'
]
],
'may_terminate' => true,
'child_routes' => [
'sessions' => [
'type' => 'literal',
'options' => [
'route' => '/sessions',
'defaults' => ['action' => 'sessions']
]
]
]
]

我认为应该给我以下路线:

  1. /profile - 有效
  2. /profile/123 - 有效
  3. /profile/sessions - 不起作用
  4. /profile/123/sessions - 有效

当我在 URL View 帮助器中使用路由 3 时,出现以下错误:

$this->url('profile/sessions');

Zend\Mvc\Router\Exception\InvalidArgumentException: Missing parameter "id"

我最初将 [0-9]+ 作为我的约束,但将其设为可选 (*) 似乎没有帮助。有没有人经历过这种情况?

最佳答案

将其添加到您的父路由。

'profile' => [
'type' => 'segment',
'options' => [ // ↓
'route' => '/profile[/:id][/:action]',
'constraints' => [ 'id' => '[0-9]*', 'action' => '[a-zA-Z][a-zA-Z0-9_-]*' ],
'defaults' => [
'controller' => 'User\Controller\User',
'action' => 'profile',
],
],
]

这将使 id 和/或 action 成为可选项。至少在理论上它应该使您列出的所有路线成为可能,已经有some issues有了这个。

关于php - ZF2 子路由中的可选路由约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12713029/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com