1

メソッドparams(CodeIgniterなど)のように、コントローラーのアクションでurlparamsを取得したいと思います。UNLIMITED params amount(0、5、10 ...)のルーティングが必要です。

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

そして、アクションは次のようになります。

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

出来ますか?単純なアプリケーションがあり、すべての場合に1つのデフォルトルーティングが必要です。

4

1 に答える 1

3

これは、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」などの値を取得できます。

于 2012-07-07T14:40:01.303 に答える