2013-02-07 32 views
0

我通過Ajax調用擊中RestfulServer(網址:BaseHref + 「API/V1 /後/」 +帖子ID + '/ PostTracks' 檢索數據對象的關係:調用getRequest方法

public function PostTracks(){ 
    $controller = Controller::curr(); 
    $request = $controller->getRequest(); 
    $passkey = $request->getHeader('passkey'); 

    $tracks = $this->owner->Tracks(); 
    $set = array(); 

    foreach($tracks as $track) 
    { 
      $set[] = array(
        'm4aURL' => $track->m4a()->URL, 
        'oggURL' => $track->ogg()->URL, 
        'Title'  => $track->Title 
      ); 
    } 
    $this->outputJSON(200, $set); 
} 

在方法的頂部我試圖抓住我通過beforeSend方法在我的ajax調用中發送的自定義頭的值。我已經驗證頭是在請求中發送給RestfulServer控制器的,但是無法獲取值。我沒有得到什麼值的$密鑰。

我怎樣才能從一個RestfulServer控制器的頭信息我不明白爲什麼getRequest不工作​​si RestfulServer從Controller擴展。

回答

1

您可以使用print_r($request->getHeaders())查看附加到該請求的所有標頭。無論如何,我懷疑這個問題與「passkey」的問題有關。默認情況下,SilverStripe將解析CamelCaseFormat中的標題名稱 - 所以我懷疑標題將被稱爲PasskeyPassKey

+0

謝謝AJ。那就是訣竅。感謝您的調試技巧。 –

1

調試請求的一個好方法是使用Debug :: dump($ request-> getHeaders())或Debug :: log($ request-> getHeaders())。

後者會將一個日誌文件寫入站點,然後您可以通過「tail -f debug.log」終端訪問服務器或者一次又一次下載它們來跟蹤該日誌文件。

通過這種方式,您可以查看當您不能正確訪問網址時註銷的內容。