2009-11-19 16 views
5

http isteğinin gövdesinin sadece UTF8 kodlanmış bir dize olduğu bir HTTP Gönderi gönderilirse, bu verilere cakephp denetleyicimde nasıl erişirim?Bir cakephp uygulamasına bir HTTP Gönderi olarak gönderilen json verilerini nasıl kullanırım?

{ 
    "pass":[], 
    "named":[], 
    "controller":"users", 
    "action":"checkin", 
    "plugin":null, 
    "url":{ 
     "ext":"json", 
     "url":"users\/checkin.json" 
    }, 
    "form":[], 
    "isAjax":false 
} 

veriler şöyle görünür yayınlanmadan: $ this-> aşağıdakileri içerir sadece params görünür

{ 
    "sessionkey":"somecrazykey", 
    "longitude":"-111.12345", 
    "latitude":"33.12345", 
    "reqtype":"checkin", 
    "location":"the mall", 
    "public":"true" 
} 

cevap

7

if ($ this-> RequestHandler-> requestedWith ('json')) { if (function_exists ('json_decode')) { $ jsonData = json_decode (utf8_encode (trim (dosya_get_contents ('php: // input')))), true);

if(!is_null($jsonData) and $jsonData !== false) { 
     $this->data = $jsonData; 
    } 
} 

Bu}

, çekirdek içinde olduğu https://trac.cakephp.org/ticket/6125 görmek için, önerilen bir codesnippet olup. Belki de aradığın şey budur.

- Bjorn

+0

Bjorn, cevap için teşekkürler. Problemimin keklerin yanında olmadığını, müşterinin veriyi aldığını anladım. Aslında sunucuya gelmiyordu. Yardımlarınız için teşekkürler! Cameron – casper

3

Bu en basit şekilde kullanabilirsiniz:

$data = $this->request->input ('json_decode', true) ; 
+0

Bu bence daha iyi bir çözüm olan @ Bjorn's. Basit ve CakePHP kod tabanını kullanır. –

İlgili konular