2012-07-07 68 views
1

我想在控制器的action中使用url params,就像方法params(就像在CodeIgniter中一樣)。我想要路由無限 params金額(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' , '((/ (/ )))',陣列( '東西'=> '*')) - >默認值(陣列( '控制器'=> '歡迎', '動作'= >'index', ));' – Chandu 2012-07-07 14:30:17

回答

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

} 

用法:

那麼如果y您有一個網址,如http://example.com/controller/action/param1/value1/param2/value2...。您可以從控制器UrlParam::get($this, 'param1')調用以獲取「param1」等的值。