Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

Diskusia – 8. diel - Jednoduchý redakčný systém v Nette - Dokončenie administrácia

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
NouF
Člen
Avatar
NouF:10.7.2015 7:53

Super

Editované 10.7.2015 7:53
 
Odpovedať
10.7.2015 7:53
Avatar
Jan Suchánek:10.7.2015 9:25

Nastavení vychozích hodnot formulaře by melo být už Presenteru.

 
Odpovedať
10.7.2015 9:25
Avatar
Jindřich Máca
Tvůrce
Avatar
Odpovedá na Jan Suchánek
Jindřich Máca:10.7.2015 11:00

To je rozhodně dobrá připomínka. :) Samozřejmě může, ale tady je potřeba si uvědomit průběh vykreslení té stránky editoru. Je tam trochu problém s ověřením té URL.

Moje úvaha:

  • Z funkce renderEditor($ur­l) se volá getArticle($url) kvůli ověření existence článku a volat předání hodnot do fomuláře tady, je čisté asi stejně jako v té šabloně.
  • Ve funkci createComponen­tEditorForm() naopak zase není přístup k té URL a volat tady znovu getArticle($url) není úplně optimální i kdyby tady ta URL byla k dispozici.
  • Řešení je pak mít buď $url nebo $article jako field té třídy. Tohle zase není úplně čisté z hlediska OOP návrhu, protože je tu víc metod pro vykreslování a fieldy by neměli být tak specifické.

Moje řešení:
Určitě není čisté, ale rozhodl jsem se zachovat standardní průběh vykreslování a komunikace mezi MVP vrstvami. Z metody renderEditor($ur­l) předám vše potřebné do šablony, tak jak by se mělo a když se ze šablony volá zpětně vykreslení komponenty, tak jak by se mělo, můžu jí předat výchozí hodnoty nebo ne. Tady je pak ten kámen úrazu, protože v Latte není hezký standardní způsob, jak ty hodnoty předat.

Samozřejmě nejsem neomylný a pokud znáš 100% čistý způsob, jak by se tohle mělo v Nette řešit, tak sem s ním! Vždycky se rád poučím. ;)

Editované 10.7.2015 11:01
 
Odpovedať
10.7.2015 11:00
Avatar
Jindřich Máca
Tvůrce
Avatar
Odpovedá na Jan Suchánek
Jindřich Máca:10.7.2015 11:48

Tak beru zpět, měl si pravdu. Koukal jsem ještě pro jistotu na http://doc.nette.org/…eating-posts a zde se volá předání hodnot do formuláře v *action**, takže to asi bude nejčistší řešení. :) V tom případě opravím napříč články. ;)

 
Odpovedať
10.7.2015 11:48
Avatar
Jindřich Máca
Tvůrce
Avatar
Jindřich Máca:10.7.2015 12:59

!!!UPOZORNĚNÍ!!!

Na základě připomínek v komentářích jsem opět trochu poupravil kód i článek. Teoreticky by to nemělo mít vliv na funkčnost, spíše jde o vylepšení čistoty kódu podle Nette. Konkrétně se jedná o předávání výchozích hodnot do formuláře v metodě render/actionE­ditor a následného vykreslení formuláře v šabloně editor.latte.

Omlouvám se všem za komplikace a zároveň děkuji za pochopení! :)

 
Odpovedať
10.7.2015 12:59
Avatar
Odpovedá na Jindřich Máca
Jan Suchánek:10.7.2015 13:02

Jj, přesně, jinak by se pak nedali dělat továrničky z neonu a předávat jim parametry a vyčistit si tak presentery od spousty kódu.

Jako je něco takového:

protected createComponentEditForm()
{
        return $this->editFormFactory->create($this->editItem);
}
Editované 10.7.2015 13:03
 
Odpovedať
10.7.2015 13:02
Avatar
Jan Suchánek:10.7.2015 13:06

Mrkni na Zlámalův blogísek: https://github.com/…w.zeminem.cz

 
Odpovedať
10.7.2015 13:06
Avatar
Jindřich Máca
Tvůrce
Avatar
Odpovedá na Jan Suchánek
Jindřich Máca:10.7.2015 13:08

Ano, na továrničky taky samozřejmě dojde, ale tenhle tutoriál je určen i pro začátečníky, takže jsem to zatím nechtěl zbytečně komplikovat a navíc, ty Presentery, kde tvořím formuláře, nejsou ještě tak extra dlouhé, ty formuláře jsou pro ně unikátní a je tam vždy jen jeden. ;)

Editované 10.7.2015 13:09
 
Odpovedať
10.7.2015 13:08
Avatar
Jan Suchánek:10.7.2015 13:10

Jasný

 
Odpovedať
10.7.2015 13:10
Avatar
pepapavlik
Člen
Avatar
Odpovedá na Jindřich Máca
pepapavlik:21.7.2015 12:47

Zdravím,

našel jsem menší chybku. A to v app/CoreModule/pre­senters/article­Presenter.php

na začátku v "use" chybí cesty na používané soubory. Bez nich to vyhazuje chybu, že není znám Form.

Možná by to chtělo již v tom šestém díle upravit, nebo v dalších ty cesty přidat.

Jsou to tyto:
use Nette\Applica­tion\UI\Form;
use Nette\Database\U­niqueConstrain­tViolationExcep­tion;
use Nette\Utils\A­rrayHash;

 
Odpovedať
21.7.2015 12:47
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!