2015-01-10 24 views
1

我試圖用Yii 2'sUrlManager設置一個規則,我知道你可以的參數範圍內使用正則表達式,你想傳遞這樣的:使用正則表達式

'urlManager' => [ 
    'enablePrettyUrl' => true, 
    'showScriptName' => false, 
    'enableStrictParsing' => false, 
    'rules' => [ 
     'foo/<id:\d+>/?' => 'foo/view', 
    ], 
], 

以上正常工作,甚至由於?,可選/

但是,我想知道如果我想要在規則中的其他地方使用RegEx,但是我不需要它作爲參數傳遞......例如。

'urlManager' => [ 
    'enablePrettyUrl' => true, 
    'showScriptName' => false, 
    'enableStrictParsing' => false, 
    'rules' => [ 
     'foo/([0-9a-zA-Z\-]+)\.<id:\d+>/?' => 'foo/view', 
    ], 
], 

上述不起作用。基本上,我想支持的URL,例如:

foo/some-name-123-end.99/ 
foo/some-name-123-end.99 

然後99(可以是任意數字)將作爲id變量傳遞。

...或者我的RegEx有問題嗎?

可以這樣做嗎?

回答

6

根據docs您只能指定參數的正則表達式。例如:

'foo/<tmpParam:[0-9a-zA-Z\-]+>.<id:\d+>/?' => 'foo/view', 
+0

是的,這就是我最終這樣做的方式。好吧。 – Brett