簡體   English   中英

Phalcon URL生成器在自定義路由中混合參數

[英]Phalcon URL generator mixes parameters in custom route

我正在嘗試以下方法:

$router->add('/([a-z]{2})/:namespace/:controller/:action/([^\/]+)', array(
    'language' => 1,
    'namespace' => 2,
    'controller' => 3,
    'action' => 4,
    'location' => 5
))->setName('location');

Volt模板中的相關行(僅用於測試目的)如下所示:

{{  url({'for': 'location', 'namespace': 'weather', 'controller': 'forecast', 'action': 'precipitation', 'location': 'Hamburg' }) }}

我想要的是// weather / forecast / precipitation / Hamburg,但是我得到的只是// weather / forecast / precipitation /

我嘗試的下一件事是

$router->add('/([a-z]{2})/:namespace/:controller/:action/{location:[^\/]+}', array(
    'language' => 1,
    'namespace' => 2,
    'controller' => 3,
    'action' => 4,
))->setName('location');

至少給了我URL的位置,但位置完全錯誤: // Hamburg / forecast / precipitation /

現在,我研究了Library \\ Mvc \\ Router,傳遞給get()的數組對我來說看起來很好:

Array
(
    [for] => location
    [namespace] => weather
    [controller] => forecast
    [action] => precipitation
    [location] => Hamburg
    [language] => en
)

我將使用自己的路由器來處理翻譯的URL,所以我認為我們現在可以忽略language參數。 到目前為止,自定義路由器只不過是調用原始路由器而已。

任何想法如何使location參數起作用?

我已經測試了路由器文檔中給出的所有可能性,甚至查看了Phalcon 2.0的路由器實現 (您使用的是這個版本,對嗎?!)。 唯一解決的問題是根本不使用命名參數,即使內置占位符也需要從路由模式中刪除:

$this->add('/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_]+)/([^\/]+)', array(
    'namespace' => 1,
    'controller' => 2,
    'action' => 3,
    'location' => 4,
))->setName('location');

換句話說,這對我來說似乎是個錯誤。 隨時提交錯誤以進一步調查。

關於language參數,我不知道您是否已經看到過這個問題 ,但是您可以用類似的方式來處理它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM