Kohana针对特定网址的多个动态路由

问题描述 投票:0回答:1

我不知道是否有人在使用kohana(使用新名称的koseven)框架进行开发。我需要有关路由的帮助。我正在使用koseven(kohana)框架将asp站点迁移到php,并且必须将所有url路由保留在当前站点上。因此,我必须在项目中使用多个路由。

URL构造函数必须是这样的:

domain.com/contenttype/contentid-> contenttype是动态的,并且通过Content Controller获取数据domain.com/profile/用户名-> profile是控制器,而index是操作。我必须从id参数获取用户名。domain.com/categories/categorname(工作原理-> category是控制器,index是操作,categorname是id参数。

我的站点上有一个管理页面,并在其上使用目录路由。

这是我在bootstrap.php文件上的路线:

    Route::set('panel', '<directory>(/<controller>(/<action>(/<id>)))', array('directory' => 'panel'))
        ->defaults(array(
            'controller' => 'panel',
            'action' => 'index',
        ));
Route::set('kategori','<kategori>(/<id>)', array('id'=>'.*'))
    ->defaults([
        'controller'=>'kategori',
        'action'=>'index',
    ]);

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

[第一个问题:如果我将kategori路由复制为配置文件,它将使用kategori路由而不是配置文件。第二个问题:如何获取内容类型的动态路由。内容控制器是默认控制器,如果id参数上没有任何内容标题,它将在动态contenttype下列出内容。如果此时标识了id参数,它将显示内容的详细信息。

谢谢。

php kohana
1个回答
0
投票
Route::set('panel', 'panel(/<controller>(/<action>(/<id>)))', ['controller' => '\w+', 'action' => '\w+', 'id' => '[-\w]+'])
    ->defaults(array(
        'directory'  => 'panel',
        'controller' => 'dashboard',
        'action'     => 'index',
        'id'         => null,
    ));

Route::set('kategori','<kategori>(/<id>)', ['kategori' => '[-\w]+', 'id' => '[-\w]+'])
    ->defaults([
        'controller' => 'kategori',
        'action' => 'index',
        'id' => null,
    ])
    ->filter(function ($route, $params, $request) {
        $model = ORM::factory('Kategori', ['kategori' => $params['kategori'], 'id' => $params['id']]);
        if ($model->loaded()) {
             $params['model'] = $model;
             return $params;
        }
        return false;
    });

Route::set('default', '(<controller>(/<action>(/<id>)))', ['controller' => '\w+', 'action' => '\w+', 'id' => '[-\w]+'])
    ->defaults([
        'controller' => 'anasayfa',
        'action'     => 'index',
        'id'         => null,
    ]);
© www.soinside.com 2019 - 2024. All rights reserved.