Kohana 3.0使用默认路由中的参数

时间:2018-04-17 11:30:52

标签: php routes kohana-3

我试图使用我的索引控制器来创建这样的网址结构:mydomain.com/vehiclemake/vehiclemodel/vehiclemodelyear

我不知道如何更改默认路线,或更改可按预期工作的副本。每当我将一个make添加到URL时加载页面,它就会给我一个空白的屏幕,并且日志告诉我它找不到一个控制器,其中包含该URL中的车辆名称。以下是默认设置和我尝试过的内容。

Route::set('vehicle', '(/<make>(/<model>(/<model_year>)))')
    ->defaults(array(
        'controller' => 'index',
        'action'     => 'index',
    ));
Route::set('default', '(<controller>(/<action>(/<id>)))')
    ->defaults(array(
        'controller' => 'index',
        'action'     => 'index',
    ));

我已尝试在stackoverflow上寻找答案,但我还没有找到一个类似于我的答案的问题。

2 个答案:

答案 0 :(得分:0)

我不确定我是否理解你的问题。 无论如何,你不需要第一个/之前。

除此之外,这种结构还需要一个控制器,用于每个品牌,并在该控制器中为每个型号提供一个动作。我认为类似下面的代码将适用于uri:/ ferrari / testarossa / 1992

numlinesbefore = 2
numlinesafter = 2
linesbefore = []
for line in read_journal_enumerated('journal.0028.txt').splitlines():
    if numlinesbefore = -1:
        if numlinesafter > 0:
            print(line)
            numlinesafter -= numlinesafter
        else:
           break
    if "jrn." and "username" in line.lower():
        for bline in linesbefore:
            print(bline)
        print(line)
        numlinesbefore = -1
    else:
        linesbefore = [line] + linesbefore
        if len( linesbefore ) > numlinesbefore:
            linesbefore.pop()

我认为路由的默认值总是如此,但我不确定。 控制器 行动 非凡的 4.Whateveryoudefine

希望这有帮助!

答案 1 :(得分:0)

您必须计划您的路由,以使一个URL不能与2条路由匹配。我建议:

Route::set('vehicle', '/<make>(/<model>(/<model_year>))')
    ->defaults(array(
        'controller' => 'vehicle',
        'action'     => 'index',
    ));

Route::set('mainpage', '/')
    ->defaults(array(
        'controller' => 'index',
        'action'     => 'index',
    ));

Route::set('default', '<controller>(/<action>(/<id>))', ['controller'=>'(index|user)'])
    ->defaults(array(
        'controller' => 'index',
        'action'     => 'index',
    ));

请注意,我卸下了1对括号。对于default路由正确的控制器是:indexuser