NOVINKA: Staň se datovým analytikem od 0 Kč a získej jistotu práce, lepší plat a nové kariérní možnosti. Více informací:

Diskuze – Lekce 9 - Jednoduchý redakční systém v Laravel - Správa článků

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
Nejnovější komentáře jsou na konci poslední stránky.
Avatar
pavlicekr
Člen
Avatar
pavlicekr:7.6.2019 14:11

Ahoj,
není mi úplně jasný, proč se volá metoda ::create na modelu Article, když ji neobsahuje a ani model ze kterého dědí. To samé Article::orderBy
Možná jsem to někde přehlídl..

Editováno
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na pavlicekr
Jan Lupčík:9.6.2019 20:17

Ahoj,

při běhu skriptu se automaticky na pozadí volá metoda query(), která vrací mocnou třídu Builder. Ta poskytuje právě práci s Eloquent ORM a také bychom v ní našli metodu create().

Pokud se však zajímáš o více informací, musíme se dostat ke třídě Model, kterou dědí Article. Ta právě definuje magickou metodu __call(), jejíž obsah je následující:

/**
 * Handle dynamic method calls into the model.
 *
 * @param  string  $method
 * @param  array  $parameters
 * @return mixed
 */
public function __call($method, $parameters)
{
    if (in_array($method, ['increment', 'decrement'])) {
        return $this->$method(...$parameters);
    }

    return $this->forwardCallTo($this->newQuery(), $method, $parameters);
}

Pokud bychom se chtěli podívat ještě hlouběji, museli bychom si otevřít i metodu forwardCallTo() ve třídě Model, a tak bychom pokračovali dále. Nám však stačí tento kontext. Jak můžeš vidět, všechny metody, které neexistují a nejsou to metody increment a decrement (takže statické volání těchto metod, proto jsou i definované zde), jsou automaticky předané builder objektu, jenž je získán z metody newQuery(). A to už je ten zmíněný Builder.

Takže i když ti IDE hlásí, že metoda neexistuje, ona je automaticky zavolaná při jejím použití. Každopádně při serióznějších projektech se určitě vyplatí sáhnout po nějakém pluginu do IDE nebo po nějaké knihovně. To už však nepatří do tohoto seriálu, jelikož děláme jednoduchou aplikaci - nechci zatěžovat čtenáře stahováním skriptů třetích stran.

Doufám, že jsem zodpověděl tvojí otázku. A děkuji za tvojí připomínku. Popřemýšlím o tom a případně to doplním někam do seriálu. :)

Odpovědět
TruckersMP vývojář
Avatar
pavlicekr
Člen
Avatar
Odpovídá na Jan Lupčík
pavlicekr:10.6.2019 20:08

Moc díky za odpověď, takhle mi to stačí. A díky za seriál, je super :)

Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na pavlicekr
Jan Lupčík:11.6.2019 9:38

Není za co, já jsem ten, co by ti měl děkovat za připomínku. Pokud se budeš chtít opět na něco zeptat, neboj se využít komentářů pod článkem. :)

Odpovědět
TruckersMP vývojář
Avatar
Neci Neco
Člen
Avatar
Neci Neco:19.9.2019 17:15

Ahoj, přidávámm se, opravdu skvělý seriál. Pouze poznámku k druhé žárovce, zřejmě platí: Jelikož HTTP akce "update()" je typu PUT, musíme ve formuláři opět použít Blade direktivu @method.

Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na Neci Neco
Jan Lupčík:19.9.2019 17:31

Ahoj, děkuji za zpětnou vazbu a taky za připomínku. Máš pravdu, během víkendu to opravím spolu s dalšími úpravami :)

Odpovědět
TruckersMP vývojář
Avatar
Martin Š.
Člen
Avatar
Martin Š.:21.9.2019 14:41

Ahoj, seriál je super. Myslím si ale, že v této kapitole chybí při úpravě metody store() poznámka, že je třeba doplnit klauzuli use:

use App\Http\Requ­ests\Article\Sto­reRequest;

V Laravelu jsem začátečník - pro zběhlého uživatele je to asi samozřejmé, ale já jsem si to musel dohledat ve výsledných zdrojácích. Možná by se ta zmínka hodila i dalším začátečníkům. ;)

Díky za pěkný seriál!

Editováno
Avatar
Jan Lupčík
Tvůrce
Avatar
Jan Lupčík:14.10.2019 16:33

Martin Š. a pavlicekr: seriál byl aktualizovaný a obsahuje obě žádané změny (vysvětlení neexistující metody v předchozím díle a přidání importů). Děkuji vám ještě jednou za feedback k seriálu :)

Odpovědět
TruckersMP vývojář
Avatar
Attila Jančik:7.1.2021 9:50

protože se změnili licenční podmínky TinyMCE a oznámení o tom zavazí, doporučuji použít v kódu:

<script type="text/javascript" src="{{ asset('https://cdnjs.cloudflare.com/ajax/libs/tinymce/4.9.2/tinymce.min.js') }}"></script>
Odpovědět
čo zješ, to ti už nevezmú...
Avatar
Karel Čada
Člen
Avatar
Karel Čada:7.3.2021 14:21

Ahoj. Nějak mi nezabírá kontrola na duplicitu url.
Mohl bys mě prosím navést, kde by mohla být chyba.

public function rules(): array {
    return [
        'title' => ['required', 'min:3', 'max:80'],
        'url' => ['required', 'min:3', 'max:80',** 'unique:articles,url'],**
        'description' => ['required', 'min:25', 'max:255'],
        'content' => ['required', 'min:50'],
    ];
Nejnovější komentáře jsou na konci poslední stránky.
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 20.