![](/img/trans.png)
[英]Phalcon PHP - how to custom Route to make url friendly like wordpress
[英]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.