HTTP request zahazuje data z customrequest
- Pavel Kravčík
- Člen | 1183
Objevil jsem zajímavou věc. Připravuji jednoduché rozhraní pro můj projekt a právě ho zkouším. Ale Nette mi zahazuje data, netuším moc proč. Projel jsem pár extensions, Nette-API, stackoverflow, ale nic jsem nenašel. Takže je možné, že je to Nette třída.
Mám nějaké jednoduché posílání přec cURL (to jsem měnil asi 30× podle různých nastavení), tohle je poslední funkční:
$ch = curl_init();
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $encode);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_exec($ch);
A pokud si to dumpnu:
dump($request); //post private => array (2)
dump(file_get_contents('php://input')); //"name=Hagrid&age=36"
Ale, když použiji jinou metodu (podobné jako REST API):
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'MY_WAR');
Výstup se změní na:
dump($request); //post private => NULL
dump(file_get_contents('php://input')); //"name=Hagrid&age=36
Takže předpokládám, že pokud není metoda POST, Nette request ty data smaže a nezobrazí je. Jak tedy poslat data do Nette třeba přes PUT?
Díky
- newPOPE
- Člen | 648
Citaj data cez 'php://input'
a je po probleme. Ako priklad https://github.com/…estRoute.php#L208
- Pavel Kravčík
- Člen | 1183
@newPOPE: Díky. Jo, to je náhradní řešení. Ale přijde mi to jako malé obcházení pěkné třídy. :)
A k tomu mám otázku, nemůže se stát, že tam skočí něco jiného na ten input? Jak se ten input prováže s konkrétním požadavkem? Respektive: přijdou 2 požadavky – první s daty, druhý bez dat. A nemůžou tam ty data zůstat i pro druhý a tím pádem načítat něco, co k tomu nepatří?
- Jan Tvrdík
- Nette guru | 2595
To je normální vlastnost PHP, že v $_POST
(čemuž odpovídá
v Nette $request->post
) není nic, pokud metoda není
POST
. Řešením by mohlo být https://github.com/…http/pull/58.
- Pavel Kravčík
- Člen | 1183
Jasně, tohle je super. Díky! Akorát v tom constructoru to chce dopsat jeden řádek, jak tam píše Majkl.