``
路线设置:
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():获取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核心有漏洞吗???
我认为应该从默认值和验证器中删除"p"参数。所以你的代码应该是这样的:
Route::set('home', '(<action>)(_<p>.htm)',
array(
'action' => '(movie|tv|new)'
)
)->defaults(
array(
'controller' => 'Home',
'action' => 'index'
)
);
我不太确定是否从默认值中删除p
,所以您可以尝试将其添加回