如何在路径中允许包含斜杠的可变部分?

时间:2014-02-24 19:00:27

标签: routes kohana kohana-3.3

例如:

mysite.com/questions/test/1

我想知道它是否真的包含一个字符串test,其id在此示例中为1

请注意。它不是一个标准的控制器vs动作和id。我必须检查一下并为此设置路线(controlleraction)。

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

1 个答案:

答案 0 :(得分:2)

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

Route::set('test', '<question>/test/<id>',
    array(
        'question' => '[^.,;?\n]+',
        'id' => '\d+',
    ))
    ->defaults(array(
        'controller' => 'Test',
        'action'     => 'index',
    ));

<...> evaluates to [^/.,;?\n]++ - 所以删除斜线(因为你想允许它)和额外的加号,你就有了你想要的那个。

现在将捕获URI /foo/bar/hello/test/5,您将获得参数

Array
(
    [question] => foo/bar/hello
    [id] => 5
)

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

访问