例如:
mysite.com/questions/test/1
我想知道它是否真的包含一个test
带有 id的字符串,1
在这个例子中。
笔记。它不是标准控制器与动作和 ID。我必须检查这一点并为此设置路线(controller
vs. action
)。
添加。原因是这部分mysite.com/["questions/"]test/1
可以包含任意数量的单词,例如mysite.com/a/b/c/d/test/1
,但 url 的结尾始终是test/(id)
。
例如:
mysite.com/questions/test/1
我想知道它是否真的包含一个test
带有 id的字符串,1
在这个例子中。
笔记。它不是标准控制器与动作和 ID。我必须检查这一点并为此设置路线(controller
vs. action
)。
添加。原因是这部分mysite.com/["questions/"]test/1
可以包含任意数量的单词,例如mysite.com/a/b/c/d/test/1
,但 url 的结尾始终是test/(id)
。
您可以修改路由每个部分的正则表达式,从而允许额外的/
. 您的路线可能如下所示:
Route::set('test', '<question>/test/<id>',
array(
'question' => '[^.,;?\n]+',
'id' => '\d+',
))
->defaults(array(
'controller' => 'Test',
'action' => 'index',
));
<...>
评估为 [^/.,;?\n]++
- 所以删除斜线(因为你想允许它)和额外的加号,你就有了你要找的那个。
/foo/bar/hello/test/5
现在将捕获URI ,您将获得参数
Array
(
[question] => foo/bar/hello
[id] => 5
)