Pomoc s funkciou a vyhľadávanie

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
StanlieK
Člen | 28
+
0
-

Dobrý deň,

tak opäť som narazil dnes na jeden problém alebo dva resp. ani neviem či je to problém, ale tak teda snáď mi teda poradíte.

Takže dotaz číslo 1:
Chcem sa spýtať, či je správne prepisovať funkciu z beforeRender() z BasePresenteru v iných presenteroch, alebo akú mám používať funkciu v ostatných presenteroch pokiaľ chcem vykonať nejakú úlohu ešte pred vykreslením samotnej stránky? Napr. v AdminPresenteri potrebujem overiť, či je užívateľský level administrator?

No a dotaz číslo 2:
Tento dotaz sa týka vyhľadávania asi takto. Takže v BasePresenteri mám vytvorený vyhľadávací formulár a tiež funkciu, ktorá bude vyhľadávať v texte článkov. Vyhľadávací formulár sa zobrazuje všade na stránke a to je ten problém, že ako mám predávať presenteru ArticlesPresenter vyhľadané výsledky? Alebo mám posielať dáta z formulára na ArticlesPresenter, ktorý si sám vyhľadá články? Akým spôsobom mám preniesť údaje z formulára do ArticlesPresenteru bez toho, aby data išli cez URL (je to asi neefektívne prenášať celé vety)?

Vopred Vám ďakujem za každú odpoveď

nanuqcz
Člen | 822
+
0
-

Ahoj,

ad 1): beforeRender klidné přepisovat můžeš, je k tomu určená. Ale řešit v ní oprávnění je pozdě. Před beforeRender se totiž ještě provádí handle metody, zpracování formulářů a action metody. Viz životní cyklus presenteru.

Pro kontrolu oprávnění tedy použij metodu startup(), nebo checkRequirements(), která je přímo pro tohle určena.

ad 2)

Alebo mám posielať dáta z formulára na ArticlesPresenter, ktorý si sám vyhľadá články? … bez toho, aby data išli cez URL

Podle mě je naopak správné, že se vyhledávaný výraz přenese do URL. Jedině tak ti pak bude ve výsledcích vyhledávání fungovat např. stránkování:

// BasePresenter
public function processSearchForm($form)
{
	$values = $form->values;

	$this->redirect('Article:list', array('keyword' => $values->keyword));
}

Editoval nanuqcz (28. 8. 2014 23:24)