2015-03-31 33 views
1

之外路由器參數我有這樣Phalconphp:讀控制器

$router->add("/api/:controller/:action/:params", array(
    'controller' => 1, 
    'action' => 2, 
    'params' => 3, 
    'myParameter' => 'test' 
)); 

所以定義的路由器,我可以得到「myParameter」參數控制器的內部這樣

$this->dispatcher->getParam("myParameter"); 

但是,我希望在我從Controller調用的另一個類中使用此參數。像

myCustomClass::test(); 


class myCustomClass { 
    function test() { 
     // this is where I need that parameter 
    } 
} 

調度員東西返回什麼,如果我把它從myCustomClass。 (當然,獲取控制器內部的值並將它作爲一個值傳遞是一個解決方案,但我可能至少將其用於100個不同的動作,所以在這種情況下它不是一個好的解決方案)。

有沒有辦法讓額外的參數超出控制器的範圍。

回答

0

我不是100%確定,但我想你可以從phalcon Http請求類獲取參數。

$request = new Phalcon\Http\Request(); 
$request->get("myParameter"); 
+1

試過,它返回實際的請求參數(get和post)。對於這個URL,'/ api/user/profile/1?x = y&a = b'$ request-> get()is Array([_url] =>/api/user/profile/1 [x] => a] => b) – marvin 2015-03-31 16:10:25

1

您需要默認依賴注入,可能在index.php中聲明。

class myCustomClass { 
    static function test() { 
     $request = \Phalcon\DI::getDefault()->get('request'); 
     $request->get("myParameter"); 
    } 
} 

此外,您正在從函數中缺少STATIC字。

+0

(對不起,我已經在我的代碼中有靜態的,忘記粘貼在這裏了),但這仍然沒有給我結果。與shivanshupatel的答案一樣的行爲。 – marvin 2015-03-31 22:09:22

+0

似乎是正確的,但我有一種奇怪的感覺:它不應該從'調度員'而不是'請求'? – yergo 2015-04-01 08:16:48

+0

@yergo調度員控制應用程序流程,控制器排序。請求從URL,GET,POST等訪問信息。 – 2015-11-21 14:35:17