0

例如:

mysite.com/questions/test/1

我想知道它是否真的包含一个test带有 id的字符串,1在这个例子中。

笔记。它不是标准控制器与动作和 ID。我必须检查这一点并为此设置路线(controllervs. action)。

添加。原因是这部分mysite.com/["questions/"]test/1可以包含任意数量的单词,例如mysite.com/a/b/c/d/test/1,但 url 的结尾始终是test/(id)

4

1 回答 1

2

您可以修改路由每个部分的正则表达式,从而允许额外的/. 您的路线可能如下所示:

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
)

可通过$this->request->param()

于 2014-02-24T19:24:53.003 回答