我在路径中的可选约束存在问题,该路径在其子项中是非可选的.我的路由结构如下:
'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'] ] ] ] ]
在我看来应该给我以下路线:
> / profile – 有效
> / profile / 123 – 有效
> / profile / sessions – 不起作用
> / profile / 123 / sessions – 有效
当我在URL视图助手中使用路由3时,我收到以下错误:
$this->url('profile/sessions');
Zend\Mvc\Router\Exception\InvalidArgumentException
: Missing parameter “id”
我最初有[0-9]作为我的约束,但让它可选(*)似乎没有帮助.以前有没有人遇到这个案子?
我曾经遇到过同样的问题,我发现的唯一解决方案是创建一个单独的路由(在你的情况下为/ profile / sessions)作为基本路由的可选参数,在访问子路由时似乎是必须的.
原文链接:https://www.f2er.com/php/130926.html