Řešení LoginForm, QuickSearchForm, navazuju na předchozí článek
- mcmatak
- Člen | 504
Navazuji na můj předchozí článek
https://forum.nette.org/…in-formulare
a jak jsem to vyřešil?
1. LoginControl
Myslím, že správné je mít vlastní komponentu, jejíž funkce jsou přihlášení a odhlášení, můžeme přihlašovat i více typů uživatelů, tím že jí předáme model, který se o přihlášení stará
form v komponentě pak má dvě funkce
<?php
$form->onSubmit[] = array($this, 'loginFormSubmitted');
$form->onInvalidSubmit[] = array($this, 'invalidLoginFormSubmitted');
?>
při úspěchu redirectuje na backlink, při neúspěchu na presenter který zobrazí chybové hlášky, nabídne další možnosti a vykreslí form ještě jednou znovu
s řešením jsem asi v celku spokojený… ale některé věci jsou hodně o kompromisech, třeba ten dvojitý form, no, ale dá se to řešit
2. QuickSearchControl
Rychlý vyhledávací formulář, nevím jeslti je na to potřeba tvořit zvláštní komponentu ale budiž. Tady ještě nejsem s řešením spokojený.
Co taková komponenta má umět?
- přesměruje na nějaký get požadavek na žádaný presenter (vzhledem k tomu, že se vždy jedná o get požadavek, tak redirect, by asi nebyl nutný a mohli bychom tedy rovnou nastavit setAction)
- měla by umět nabídnout jak přesun na konkrétní presenter, tak nabídnout combo box, který určuje kdo je příjemcem (vyhledávání článků, produktů atd.)
- mohla by nabídnout i nějaký autocomplete
- měla by mít možnost být vykreslena na stránce několikrát, např. pro každý presenter jinak, vnitřní formulář by pak mohl být odvozen od výsledného presenteru (tedy název komponenty)
Co taková komponenta potřebuje?
- Obvykle potřebuje nějaký ten text uvnitř inputu, něco jako hledej…,
- obvykle potřebuje vědět jestli button bude image nebo submit a co bude na submitu napsané
toť snad vše z těchto základů, a jak by měla vypadat implementace? a tady už se mi to moc nelíbí, s množstvím podmínek se to začíná komplikovat a přestává to být hezké
…obvykle by css k nastylování takového formu mělo stačit a připojovat šablonu by nemělo být potřeba
<?php
{control quickSearchForm array(presenters=>array("Articles"), "submit"=>array("image"=>"/button-img.jpg"), "search"=>array("value"=>"hledej...")), "/templates/quickSearchForm.phtml"}
{control quickSearchForm array(presenters=>array("Articles", "Products"), "submit"=>array("value"=>"OK"), "search"=>array("value"=>"hledej..."), "autocomplete"=>"/SuggestArticles.php"), "/templates/quickSearchForm.phtml"}
případně připojení šablony, by mělo být ojedinělé
{control quickSearchForm array(presenters=>array("Articles", "Products"), "submit"=>array("value"=>"OK"), "search"=>array("value"=>"hledej..."), "autocomplete"=>"/SuggestArticles.php")}
?>
tak co vy na to?
celý zápis ještě více znesnadňuje to, že tag {widget} se mi nedaří zapsat na více řádků, jinak to spadne
Editoval mcmatak (14. 10. 2009 22:34)
- Honza Kuchař
- Člen | 1662
můžeme přihlašovat i více typů uživatelů, tím že jí předáme model, který se o přihlášení stará
To nebude používat Nette\Security?
Já na tohle využívám AuthPresenter
. Pokud chceš můžu
poslat zdroják.
QuickSearchControl
Nápad zajímavý. Ale ten našeptávač by měl mít nějakou integrovanou podporu. Odkaz na php soubor nebude nic moc.
- mcmatak
- Člen | 504
integrovanou podporu? co tím myslíš? samozřejmě bude součástí javascript, ale třeba našeptávač se mi moc nechce odesílat na nette, protože by ho podle mne zbytečně zdržovalo
krom toho tohle nebyl ani tak navrh na vytvoření komponent, spíš zamyšlení nad tím jestli to tak řešíte, nebo jinak, jestli se vám zdá nebo nezdá ta šílená konfigurace v šabloně, sem nette začátečník, sic po školení, ale spíš bojuji s nějakou logikou, a dělám opravdu pouze složité věci, takže se něco blbě učí, když zrovna musíte stavět vzducholoď
jinak na zdroják se určitě rád podívám, používám to samé co ty, ale opět upravené na míru
nevíte někdo jestli se dá někde mrknout na zdrojáky root.cz, lupa.cz nebo tak? alespoň obecný kód? ne žádné fičury, považuju to asi za jediný složitější projekt v nette v tuhle chvíli (i když sám o sobě je dost triviální)
- Honza Kuchař
- Člen | 1662
nevíte někdo jestli se dá někde mrknout na zdrojáky root.cz, lupa.cz nebo tak? alespoň obecný kód? ne žádné fičury, považuju to asi za jediný složitější projekt v nette v tuhle chvíli (i když sám o sobě je dost triviální)
Silně pochybuji
integrovanou podporu? co tím myslíš? samozřejmě bude součástí javascript, ale třeba našeptávač se mi moc nechce odesílat na nette, protože by ho podle mne zbytečně zdržovalo
Mno asi by to trochu zdržovalo, ale zase by to bylo takové více instantní. :)
Editoval honzakuchar (15. 10. 2009 13:44)