Odeslání formuláře ven z aplikace
- RomikTronik
- Člen | 27
Dobrý den,
potřebuju odeslat formulář metodou POST ven z nette aplikace na jinou
doménu. (Jedná se o validační skript, který mi pak POST pošle zpět)
Můžete mi prosím někdo poradit jak?
- srigi
- Nette Blogger | 558
Musis pouzit cURL, cca takto:
$data = 'from=Betty%20Lee&comment=Lorem%20ipsum%20dolor%20sit%20amet';
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
Editoval srigi (13. 9. 2010 14:51)
- redhead
- Člen | 1313
Stačí fce fopen()
nebo file_get_contents()
(název souboru bude URL) s použitím volitelného parametru $context .
Context získáš přes stream_context_create()
. Více info si
najdi na php.net u těhle funkcí a v komentářích pod nimy jsou vždy
dobré rady.
edit: taky to ovšem z bezpečnostních důvodů nemusí jít, nejsem si jist, jestli to nějaká direktiva může zakázat (safe mode nebo něco podobného). Vyzkoušej..
Editoval redhead (13. 9. 2010 16:19)
- RomikTronik
- Člen | 27
Takže jestli to dobře chápu, tak Nette podporuje odeslání formuláře pouze na akci ve které je formulář spuštěný – tj. na sebe sama. A abych poslal POSTem formulář někam jinam, musím na to vymyslet nějakou speciální fintu, která obejde pattern Post-Redirect-Get?
Myslím, že je dobrý nápad nějaké dvířka na posílání formulářů ven akce do Nette dodělat. Potřebuju poslat formulář na validační skript při platbě kartou – což je podle mě věc, kterou potřebuje 90% komerčních projektů.
- RomikTronik
- Člen | 27
$form->setAction($url);
mi boužel nefunguje.
Pokaždé nastaví formuláři action=„presenter/action?do=myForm-submit“
Editoval RomikTronik (14. 9. 2010 11:48)
- toka
- Člen | 253
Pokud použiji „klasický“ Form
, tak vše funguje:
...
$form = new Form('search');
$form->setAction('http://www.odkaznekamdohaje.cz/neco.php');
$form->setMethod('get');
...
Pokud ale použiji AppForm
, tak už funguje pouze
setMethod()
:
...
$form = new AppForm();
$form->setAction('http://www.odkaznekamdohaje.cz/neco.php');
$form->setMethod('get');
...
Tzn. Nette nuceně „někde“ přepisuje parametr action
u formuláře pokud využiji AppForm
? Dá se to někde vypnout,
resp. jak docílit požadovaného výsledku? Samotného mne to zajímá.
- Patrik Votoček
- Člen | 2221
Je to přesně jak píše redhead… Attachuj si form přímo v konstruktoru… (Obecně by se dalo říct že by jsi to u formulářů mel používat vždy předejdeš tím v budoucnu dalším problémům…)
- westrem
- Člen | 398
toka napsal
Tzn. Nette nuceně „někde“ přepisuje parametr action u formuláře pokud využiji AppForm? Dá se to někde vypnout, resp. jak docílit požadovaného výsledku? Samotného mne to zajímá.
Wow a to som extra kukal APIcko, pretoze som vedel, ze u Form-u to bude okej a u AppForm by mohol byt problem tak som nechcel zavadzat, viete ma niekto odkazat kde sa to natvrdo prepisuje pri AppForme?
vrtak-cz napsal
Nie som si isty ci obaja pod pripojenim v konstruktoru rozumiene to iste, mozes ukazat kusok kodu, ktory by ukazoval ako na to? Dakujem.