Udaje z formu do dalsieho presenteru
- Kalino
- Člen | 8
Dobrý deň,
mam takyto problem:
Formular mam vykresleny v jednom presenteri ale spracovat ho chcem v inom.
Teda po odoslani formularu mam
nieco taketo:
<?php
$this->redirect('nazov druheho presenteru');
?>
Avsak v tom presenteri uz ziadne $_POST/$_GET nie su.
Skusal som aj namiesto redirect pouzit setAction pri vytvarani formularu ale to
nefungovalo.
Ako sa teda mam dostat k datam v inom presenteri?
Nevadilo by ani to, keby sa mi tie hodnoty maju ukladat do SESSION.
Editoval Kalino (5. 1. 2014 16:04)
- Oli
- Člen | 1215
K $_POST a $_GET by jsi nikdy neměl přistupovat přímo. Všechny hodnoty jsou v Nettím formuláři sanitizované a ošetřené.
Otázka je, jestli máš správně návrh aplikace. Opravdu potřebuješ data zpracovat v jiném presenteru? Nestačí ti zpracovat je v aktuálním a po zpracování se přesměrovat na ten novej?
Pokud to fakt potřebujš, tak záleží na tom, jakou používáš verzi
Nette. V 2.0.x by mohlo fungovat něco jako
callback(Presenter, 'zpracujData');
v 2.1 je callbeck
odstraněnej a místo něj je
myslím array(Presenter, 'zpracujData');
- Kalino
- Člen | 8
Ale ak neobsahuju ziadne data, tak je jedno ako k nim pristupujem. Hladisko bezpecnosti by som mohol riesit az po tom, co to bude funkcne.
Je to vyhladavaci formular, teda sa v dalsom presenteri zobrazia vysledky hladania, teda tento sposob asi nebude mozny.
Ok, pozriem sa nato ako funguje callback.
- japlavaren
- Člen | 404
search form je specialny pripad formularu (vykresleny na vela strankach
smerujuci na jednu)
prakticky mas 2 moznosti:
1. klasicky form (Nette\Forms\Form) a search presenter, ktory bude vyhladavat (v tom potom mozes pristupovat k name vyhladavacieho inputu ako parametru prislusneho renderu)
<?php
class BasePresenter{
function createComponentSearch(){
$form = new Nette\Forms\Form;
$form->setMethod($form::GET)
->setAction($this->link('Search:')
->addText('q', 'Vyraz')
->addSubmit('search', 'Hladaj dunco');
return $form;
}
}
// ...
class SearchPresenter{
function renderDefault($q){
dump($q);
}
}
?>
2. moznost je mat klasicky UI/Form ktory spracujes cez callback a nasledne presmerujes na ten search/iny presenter s parametrami (ak mas zlozitejsie vyhladavanie a ma nejaku masku. pr. search/znacka/model automobilu…)
kapišto
Editoval japlavaren (5. 1. 2014 18:09)
- japlavaren
- Člen | 404
do session to urcite neukladaj. ukladaj vytvor z toho link a na ten presmeruj. ako pise oli znemoznuje to ulozit si vyhladavanie do zaloziek