Zend Framework 3分段路由不起作用

时间:2019-12-12 17:28:11

标签: php http zend-framework routes zend-framework3

我有以下module.config.php:

def evalerror(preds, dtrain):
   ...
   return 'my-error', error

我正在尝试使用以下路线,但无效:

  

http://localhost:8081/landingpage/show/1CGe2cveQ

如果我使用以下路线,则可以:

  

http://localhost:8081/landingpage/show

如果我使用带有/的上一条路线,则无效:

  

http://localhost:8081/landingpage/show/

如果您需要更多信息,请告诉我。 谢谢。

1 个答案:

答案 0 :(得分:1)

您在路由声明中使用双斜杠:@Binding后跟/landingpage/匹配路由。如果删除此双斜杠,则该路由将按预期工作。

/:action/:id

此外,建议您修改路由声明以使ID可选:

'route' => '/landingpage[/:action/:id]',

经过测试: 配置

'route' => '/landingpage[/:action[/:id]]',
'constraints' => [
    'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
    'id' => '[a-zA-Z0-9_-]+'
]

IndexController:

'landingpage' => [
    'type' => Segment::class,
    'options' => [
        'route' => '/landingpage[/:action[/:id]]',
        'constraints' => [
            'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
            'id' => '[a-zA-Z0-9_-]*'
        ],
        'defaults' => [
            'controller' => Controller\IndexController::class,
            'action' => 'index'
        ]
    ],
    'may_terminate' => true,
],

呼叫 /着陆页

public function indexAction () {
    print '<pre>' . print_r($this->params()->fromRoute(), true);
    die(); 
}
public function showAction(){
    print '<pre>' . print_r($this->params()->fromRoute(), true);
    die();
}

呼叫 /着陆页/显示

Array
(
    [controller] => Application\Controller\IndexController
    [action] => index
)

呼叫 / landingpage / show / 1CGe2cveQ

Array
(
    [controller] => Application\Controller\IndexController
    [action] => show
)

如果已启用,请不要忘记清除配置缓存;)