getParam()始终返回null

时间:2018-01-04 19:10:58

标签: php phalcon phalcon-routing

我试图使用路由器从网址获取项目ID。我们说这是我的网址:http://boardash.test/tasks/all/7我希望在我的控制器中获得7。

我用这个创建了一个路由器:

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

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

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

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

我缺少什么?

1 个答案:

答案 0 :(得分:0)

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

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

UPDATE:经过一些测试后,当命名参数位于路径的末尾时,似乎是混合数组/短语法中的错误。

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

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

但是,这不会为{project}返回正确的值。它返回&#34;查看&#34;而不是&#34; 4444444&#34;。

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

文档中解释的语法: 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