Skip to content

Commit

Permalink
upravy wip
Browse files Browse the repository at this point in the history
  • Loading branch information
dg committed May 2, 2024
1 parent b83e39e commit 8b9258e
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 8 deletions.
4 changes: 4 additions & 0 deletions quickstart/cs/@home.texy
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@ a uvidíme úvodní stránku Nette Frameworku:

Aplikace funguje a můžete začít dělat úpravy.

/--comment
TODO: ověřit mod_rewrite [zapnout|nette:troubleshooting#Jak nastavit server pro hezká URL] `mod_rewrite` na webserveru.
\--

.[note]
Pokud nastal problém, [zkuste těchto pár tipů |nette:troubleshooting#Nejde mi Nette, zobrazuje se bílá stránka].

Expand Down
22 changes: 17 additions & 5 deletions quickstart/cs/home-page.texy
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,10 @@ V případě jednoduchých aplikací, jako bude náš blog, budou celou modelovo
Vytvoření databáze pomocí Admineru
==================================

Pro ukládání dat použijeme MySQL databázi, protože je nejvíce rozšířená mezi programátory webových aplikací. Pokud ji však použít nechcete, klidně si zvolte databázi dle vlastního uvážení.
Pro ukládání dat použijeme MySQL databázi, protože je nejvíce rozšířená mezi programátory webových aplikací.

.[note]
Pokud se nechcete zabývat přípravou databázových tabulek, můžete si stáhout předpřipravenou SQLite databázi [blog.sqlite|https://raw.githubusercontent.com/nette-examples/quickstart/v4.0/data/blog.sqlite] do složky `data/` a rovnou přeskočit k [#Připojení k databázi].

Nyní si připravíme databázovou strukturu, kde budou uloženy články našeho blogu. Začneme velmi jednoduše - vytvoříme si pouze jednu tabulku pro příspěvky.

Expand Down Expand Up @@ -75,14 +78,21 @@ database:
password: *zde vložte heslo k databázi*
```

Pokud používáte předpřipravenou SQLite databázi, uveďte tohle:

```neon .{file:config/common.neon}
database:
dsn: sqlite:%rootDir%/data/blog.sqlite
```

.[note]
Při editování tohoto souboru dávejte pozor na odsazení řádků. Formát [NEON |neon:format] akceptuje jak odsazení pomocí mezer, tak odsazení pomocí tabulátorů, ale ne obojí zároveň. Výchozí konfigurační soubor ve Web Projectu využívá tabulátory.


Předání databázového spojení
============================

Presenter `HomePresenter`, který se bude starat o výpis článků, potřebuje připojení k databázi. Pro jeho získání využijeme konstruktor, který bude vypadat takto:
Presenter `HomePresenter` (je v adresáři `app/UI/Home/`), který se bude starat o výpis článků, potřebuje připojení k databázi. Pro jeho získání [využijeme konstruktor|nette:introduction-to-object-oriented-programming], který bude vypadat takto:

```php .{file:app/UI/Home/HomePresenter.php}
<?php
Expand All @@ -92,6 +102,7 @@ use Nette;

final class HomePresenter extends Nette\Application\UI\Presenter
{
// předání objektu Nette\Database\Explorer do property
public function __construct(
private Nette\Database\Explorer $database,
) {
Expand Down Expand Up @@ -161,7 +172,8 @@ Pojďme zobrazit příspěvky z blogu - šablonu upravíme následovně:
{/block}
```

Pokud obnovíme prohlížeč, uvidíme výpis všech příspěvků. Výpis zatím není moc hezký, ani barevný, proto můžeme do souboru `www/css/style.css` přidat pár [CSS stylů |https://github.com/nette-examples/quickstart/blob/v4.0/www/css/style.css] a zalinkovat jej v layoutu:
Pokud obnovíme prohlížeč, uvidíme výpis všech příspěvků. Výpis zatím není moc hezký, ani barevný, proto můžeme do souboru `www/css/style.css` přidat pár [CSS stylů |https://github.com/nette-examples/quickstart/blob/v4.0/www/css/style.css] a zalinkovat jej v layoutu.
K tomu se nám hodí proměnná `$basePath`, kterou vytváří framework automaticky a obsahuje absolutní URL cestu ke kořenovému adresáři webu:

```latte .{file:app/UI/@layout.latte}
...
Expand All @@ -172,7 +184,7 @@ Pokud obnovíme prohlížeč, uvidíme výpis všech příspěvků. Výpis zatí

Značka `{foreach}` iteruje přes všechny příspěvky, které jsme předali šabloně v proměnné `$posts`, a pro každý vykreslí daný kus HTML. Chová se přesně jako PHP kód.

Zápisu `|date:` říkáme filtr. Filtry jsou určeny k formátování výstupu. Tento konkrétní filtr převádí datum (např. `2013-04-12`) na jeho čitelnější podobu (`April 12, 2013`). Filtr `|truncate` ořízne řetězec na uvedenou maximální délku a v případě, že řetězec zkrátí, přidá na konec trojtečku. Jelikož se jedná o náhled, nemá smysl zobrazovat celý obsah článku. Další výchozí filtry [najdeme v dokumentaci |latte:filters] a nebo si můžeme vytvořit vlastní, když je to potřeba.
Zápisu `|date:` říkáme filtr. Filtry jsou určeny k formátování výstupu. Tento konkrétní filtr převádí datum (např. `2013-04-12`) na jeho čitelnější podobu (`12. 4. 2013`). Filtr `|truncate` ořízne řetězec na uvedenou maximální délku a v případě, že řetězec zkrátí, přidá na konec trojtečku. Jelikož se jedná o náhled, nemá smysl zobrazovat celý obsah článku. Další výchozí filtry [najdeme v dokumentaci |latte:filters] a nebo si můžeme vytvořit vlastní, když je to potřeba.

Ještě jedna věc. Předchozí kód můžeme zkrátit a zjednodušit. Toho docílíme záměnou *Latte tagů* za *n:atributy*:

Expand All @@ -181,7 +193,7 @@ Ještě jedna věc. Předchozí kód můžeme zkrátit a zjednodušit. Toho doc
<h1>Můj blog</h1>

<div n:foreach="$posts as $post" class="post">
<div class="date">{$post->created_at|date:'F j, Y'}</div>
<div class="date">{$post->created_at|date:'j. n. Y'}</div>

<h2>{$post->title}</h2>

Expand Down
6 changes: 3 additions & 3 deletions quickstart/cs/single-post.texy
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Stránka s příspěvkem
Nyní si vytvoříme další stránku blogu, která bude zobrazovat jeden konkrétní příspěvek.


Musíme si vytvořit novou render metodu, která získá jeden konkrétní článek a předá jej do šablony. Mít tuto metodu v `HomePresenter` není moc hezké, protože se bavíme o článku a ne úvodní stránce. Vytvořme si tedy `PostPresenter` v `app/UI/Post/`. Tento presenter se také potřebuje připojit k databázi, takže zde opět napíšeme konstruktor, který bude vyžadovat databázové připojení.
Musíme si vytvořit novou render metodu, která získá z databáze konkrétní článek a předá jej do šablony. Mít tuto metodu v `HomePresenter` není moc hezké, protože to už není součást úvodní stránky. Vytvořme si tedy `PostPresenter` v `app/UI/Post/`. Tento presenter se také potřebuje připojit k databázi, takže zde opět použijeme konstruktor, který bude vyžadovat databázové připojení.

`PostPresenter` by mohl tedy vypadat takto:

Expand Down Expand Up @@ -34,7 +34,7 @@ final class PostPresenter extends Nette\Application\UI\Presenter

Nesmíme zapomenout uvést správný namespace `App\UI\Post`, který podléhá nastavení [mapování presenterů |https://github.com/nette-examples/quickstart/blob/v4.0/config/common.neon#L6-L7].

Metoda `renderShow` vyžaduje jeden argument - ID jednoho konkrétního článku, který má být zobrazen. Poté tento článek načte z databáze a předá ho do šablony.
Metoda `renderShow` vyžaduje jeden argument - ID článku, který má být zobrazen. Poté tento článek načte z databáze a předá ho do šablony.

Do šablony `Home/default.latte` vložíme odkaz na akci `Post:show`.

Expand All @@ -59,7 +59,7 @@ Atribut `n:href` je obdobou tagu `{link}`.



Pro akci `Post:show` však ještě neexistuje šablona. Můžeme si vyzkoušet otevřít odkaz na tento příspěvek. [Tracy |tracy:] zobrazí error, protože šablona `Post/show.latte` ještě neexistuje. Pokud vidíte jiné chybové hlášení, tak pravděpodobně budete muset zapnout `mod_rewrite` na webserveru.
Pro akci `Post:show` však ještě neexistuje šablona. Můžeme si vyzkoušet otevřít odkaz na tento příspěvek. [Tracy |tracy:] zobrazí error, protože šablona `Post/show.latte` ještě neexistuje. Pokud vidíte jiné chybové hlášení, [zkuste těchto pár tipů |nette:troubleshooting].

Vytvoříme tedy šablonu `Post/show.latte` s tímto obsahem:

Expand Down

0 comments on commit 8b9258e

Please sign in to comment.