繁体   English   中英

getParam()始终返回null

[英]getParam() always returns null

我正在尝试使用路由器从URL获取项目ID。 假设这是我的URL: http://boardash.test/tasks/all/7 ,我想在控制器中获取7。

我使用以下命令创建了一个路由器:

$router->add(
    '/tasks/:action/{project}',
    [
        'controller' => 'tasks',
        ':action'    => 1
    ]
);

并尝试使用以下方式访问它:

$this->dispatcher->getParam('project');

但是当我var_dump()这个时,它返回null

我想念什么?

:action占位符不正确。 尝试这样:

$router->add(
    '/tasks/:action/{project}',
    [
        'controller' => 'tasks',
        'action'    => 1 // <-- Look here
    ]
);

更新:经过几次测试后,当命名参数位于路由末尾时,似乎是混合数组/短语法中的错误。

这将按预期工作并返回正确的参数。

// Test url: /misc/4444444/view
$router->add('/misc/{project}/:action', ['controller' => 'misc', 'action' => 2])

但是,这不会为{project}返回正确的值。 它返回“视图”而不是“ 4444444”。

// Test url: /misc/view/4444444
$router->add('/misc/:action/{project}', ['controller' => 'misc', 'action' => 1])

docs中说明的语法: https : //docs.phalconphp.com/en/3.2/routing#defining-mixed-parameters

我将在稍后进行进一步调查,但是您可以同时考虑在github上提交问题。


临时解决方案:在紧急情况下,您可以使用此替代方法。

$router->add('/:controller/:action/:params', ['controller' => 1, 'action' => 2, 'params' => 3])

// Test url: misc/view/test-1/test-2/test-3
$this->dispatcher->getParams() // array of all
$this->dispatcher->getParam(0) // test-1
$this->dispatcher->getParam(1) // test-2
$this->dispatcher->getParam(3) // test-3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM