【问题标题】:Kohana more than one dynamic routing for specific urlsKohana 多个特定 url 的动态路由
【发布时间】:2020-08-15 12:33:05
【问题描述】:

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

Url 结构体必须是这样的:

domain.com/contenttype/contentid -> contenttype 是动态的,通过 Content Controller 获取数据 domain.com/profile/username ->profile 是控制器,index 是操作。我必须从 id 参数中获取用户名。 domain.com/categories/categorname(工作正常-> categories 是控制器,index 是 action,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',
    ]);

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

谢谢。

【问题讨论】:

    标签: php kohana


    【解决方案1】:
    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,
        ]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多