Kohana v2和v3之间的路由差异

时间:2013-07-06 05:23:24

标签: php routing kohana-3 kohana-2

在Kohana 2中,控制器函数可以在其中包含参数,而无需为其编写路径。

url: /some/arg/is/here

在控制器中,我可以简单地使用任意名称的四个args,并且可以从函数中自动访问它们。

public function myFunc($a, $b, $c, $d) {}

但是在Kohana 3中,我必须为我想要的路线类型写一条路线。有没有一条我可以使用的路线可以让我的urlargs相互配合,每次我写一个新功能时都不需要做额外的工作?

2 个答案:

答案 0 :(得分:1)

FYI Kohana 3从头开始完全重写。 Kohana 2和3可以被认为是两个独立的框架。

至于路线,您可能想要使用全能路线。请在此处查看Kohana 3.3 catch-all route

我建议不要使用它,因为它失去了KO3路由灵活性的全部目的。

此外,由于KO 3.1(我认为),你不能再将参数作为方法参数访问。而是使用Request类来检索如下所示的参数:$this->request->param('abc');或者如果您在控制器之外使用Request类,则实例化Request::current()->param('abc');类{{1}}

答案 1 :(得分:1)

必须在路线中指定所有参数,但可以使其成为可选参数。在这种情况下,您可能希望将默认路由更改为...

Route::set('default', '(<controller>(/<action>(/<arg1>(/<arg2>(/<arg3>(/<arg4>))))))');

然后,您可以使用“request”...

来引用args
$this->request->param('arg1');
$this->request->param('arg2');
$this->request->param('arg3');
$this->request->param('arg4');

如果需要,你显然可以超过4个。