NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 8 - Jednoduchý redakční systém v Nette - Dokončení administrace

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
NouF
Člen
Avatar
NouF:10.7.2015 7:53

Super

Editováno 10.7.2015 7:53
 
Odpovědět
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.

 
Odpovědět
10.7.2015 9:25
Avatar
Jindřich Máca
Tvůrce
Avatar
Odpovídá 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. ;)

Editováno 10.7.2015 11:01
 
Odpovědět
10.7.2015 11:00
Avatar
Jindřich Máca
Tvůrce
Avatar
Odpovídá 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. ;)

 
Odpovědět
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í! :)

 
Odpovědět
10.7.2015 12:59
Avatar
Odpovídá 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);
}
Editováno 10.7.2015 13:03
 
Odpovědět
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

 
Odpovědět
10.7.2015 13:06
Avatar
Jindřich Máca
Tvůrce
Avatar
Odpovídá 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. ;)

Editováno 10.7.2015 13:09
 
Odpovědět
10.7.2015 13:08
Avatar
Jan Suchánek:10.7.2015 13:10

Jasný

 
Odpovědět
10.7.2015 13:10
Avatar
pepapavlik
Člen
Avatar
Odpovídá 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;

 
Odpovědět
21.7.2015 12:47
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 60.