2012-07-07 5 views
1

메소드 params (예 : CodeIgniter)와 같이 컨트롤러의 동작에서 url 매개 변수를 가져 오려고합니다. UNLIMITED 매개 변수 금액 (0, 5, 10 ...)에 대한 라우팅을 갖고 싶습니다.Kohana :: 무한대 매개 변수로 라우팅하기

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

그리고 행동이 될 것입니다 : 그것은 가능

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

인가? .. 나는 간단한 응용 프로그램을 가지고, 나는 모든 경우에 하나의 기본 라우팅을 갖고 싶어

+0

다음을 확인하십시오 : http://kohanaframework.org/3.0/guide/kohana/routing#regex'Route :: set ('default' '-> defaults (배열 ( '컨트롤러 '=>'환영 ', '작업 '='배열 '() > 'index', )); – Chandu

답변

3

당신은 달성 할 수있는 당신의 bootstrap.php 파일에 "오버 플로우"경로를 추가하여 : 나는 보통 그런

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

그런 다음 Y 경우

:

<?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; 
    } 

} 

사용법 : 다양한 매개 변수에 액세스하는 클래스의이 종류를 사용 예 : http://example.com/controller/action/param1/value1/param2/value2...과 같은 URL이 있습니다. 컨트롤러 UrlParam::get($this, 'param1')에서 "param1"등의 값을 얻을 수 있습니다.