kohana3.3 Route :: url()工作得不好

时间:2013-08-19 07:30:39

标签: php kohana kohana-3 kohana-3.3

```

路线设定:

Route::set('home', '(<action>)(_<p>.htm)', 
           array(
               'action' => '(movie|tv|new)', 
               'p' => '[2-9]|[1-9][0-9]+'
           )
)->defaults(
           array(
               'controller' => 'Home', 
               'action' => 'index', 
               'p' => 1
           )
);

通过Route :: url()获取网址:

Route::url('home',array('action' => 'movie', 'p' => 3));

得到了一个网址:

http:// www.domain.com/movie_3.htm

工作得非常好。

但是

Route::url('home',array('action' => 'movie'));

得到了一个网址:

http:// www.domain.com/movie_1.htm 

这是不对的。

它应该是:

http:// www.domain.com/movie/ 

```

我该如何解决????

感谢。

=====更新8/19 16:23 =====

Route::set('test', 'movie(_<p>.htm)', 
                array('p' => '[2-9]|[1-9][0-9]+')
          )->defaults(
                array('controller' => 'Movie', 'action' => 'index', 'p' => '1')
          );

此路线设定适用于任何情况

Route::url('test',array('p'=>'1'));

得到了一个网址:

http://www.domain.com/movie

Route::url('test',array('p'=>'2'));

得到了一个网址:

http://www.domain.com/movie_2.htm

Route::url('test');

得到了一个网址:

http://www.domain.com/movie

= =,kohana核心是否有错误???

1 个答案:

答案 0 :(得分:0)

我认为你应该从默认值和验证器中删除“p”参数。所以你的代码应该是这样的:

Route::set('home', '(<action>)(_<p>.htm)', 
           array(
               'action' => '(movie|tv|new)'
           )
)->defaults(
           array(
               'controller' => 'Home', 
               'action' => 'index'
           )
);

我不确定从默认设置中删除p,因此您可以尝试将其添加回来