繁体   English   中英

Kohana ::使用无限参数进行路由

[英]Kohana:: routing with infinity params

我想在控制器的动作中采用url params,比如方法参数(比如CodeIgniter)。 我想为UNLIMITED params数量( 0,5,10 ......)设置路由。

url: http://localhost/controller/action/param1/param2/..../param10...

行动将是:

function action_something($param1, $param2, .... $param10) { ... }

可能吗? 我有简单的应用程序,我希望每个案例都有一个默认路由..

您可以通过向bootstrap.php文件添加“溢出”路由来实现此目的:

Route::set('default', '(<controller>(/<action>(/<overflow>)))', array('overflow' => '.*?'))
    ->defaults(array(
        'controller' => 'api',
        'action'     => 'index',
    ));

然后我通常使用这种类来访问各种参数:

<?php defined('SYSPATH') or die('No direct script access.');

class UrlParam {

    static public function get($controller, $name) {
        $output = $controller->request->param($name);
        if ($output) return $output;

        $overflow = $controller->request->param("overflow");
        if (!$overflow) return null;

        $exploded = explode("/", $overflow);
        for ($i = 0; $i < count($exploded); $i += 2) {
            $n = $exploded[$i];
            if ($n == $name && $i < count($exploded) - 1) return $exploded[$i + 1];
        }

        return null;
    }

}

用法:

然后,如果您有一个URL,例如http://example.com/controller/action/param1/value1/param2/value2... 您可以从控制器UrlParam::get($this, 'param1')调用以获取“param1”等的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM