簡體   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