Skip to content

Commit

Permalink
it
Browse files Browse the repository at this point in the history
  • Loading branch information
dg committed May 14, 2024
1 parent 3304e08 commit 9ea6f45
Show file tree
Hide file tree
Showing 17 changed files with 204 additions and 204 deletions.
24 changes: 12 additions & 12 deletions latte/bg/cookbook/grouping.texy
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

Да предположим, че имаме следната таблица в базата данни, в която елементите са разделени на категории:

| id | catId | name
| id | categoryId | name
|------------------
| 1 | 1 | Apple
| 2 | 1 | Banana
Expand Down Expand Up @@ -51,7 +51,7 @@
<ul>
{iterateWhile}
<li>{$item->name}</li>
{/iterateWhile $item->catId === $iterator->nextValue->catId}
{/iterateWhile $item->categoryId === $iterator->nextValue->categoryId}
</ul>
{/foreach}
```
Expand Down Expand Up @@ -93,32 +93,32 @@
Ако трябва да решим същия проблем, като използваме напълно елементарни шаблони, например в Twig, Blade или чист PHP, решението би изглеждало по следния начин

```latte
{var $prevCatId = null}
{var $prevCategoryId = null}
{foreach $items as $item}
{if $item->catId !== $prevCatId}
{if $item->categoryId !== $prevCategoryId}
{* the category has changed *}

{* we close the previous <ul>, if it is not the first item *}
{if $prevCatId !== null}
{if $prevCategoryId !== null}
</ul>
{/if}

{* we will open a new list *}
<ul>

{do $prevCatId = $item->catId}
{do $prevCategoryId = $item->categoryId}
{/if}

<li>{$item->name}</li>
{/foreach}

{if $prevCatId !== null}
{if $prevCategoryId !== null}
{* we close the last list *}
</ul>
{/if}
```

Този код обаче е неразбираем и неинтуитивен. Връзката между началния и крайния HTML таг не е съвсем ясна. От пръв поглед не е ясно дали има грешка. А това изисква помощни променливи като `$prevCatId`.
Този код обаче е неразбираем и неинтуитивен. Връзката между началния и крайния HTML таг не е съвсем ясна. От пръв поглед не е ясно дали има грешка. А това изисква помощни променливи като `$prevCategoryId`.

За разлика от това решението с `{iterateWhile}` е чисто, ясно, не изисква помощни променливи и е надеждно.

Expand Down Expand Up @@ -154,7 +154,7 @@
{foreach $items as $item}
<h1>{$item->name}</h1>
<ul>
{iterateWhile $item->catId === $iterator->nextValue->catId}
{iterateWhile $item->categoryId === $iterator->nextValue->categoryId}
<li>{$item->name}</li>
{/iterateWhile}
</ul>
Expand All @@ -167,7 +167,7 @@

Можем да създадем няколко вътрешни цикъла в един цикъл и дори да ги вложим един в друг. По този начин например подкатегориите могат да бъдат групирани заедно.

Да предположим, че в таблицата има още една колона `subCatId` и освен че всяка категория е в отделна колона, всяка подкатегория ще бъде в отделна колона. `<ul>`, всяка подкатегория ще бъде в отделна колона. `<ol>`:
Да предположим, че в таблицата има още една колона `subcategoryId` и освен че всяка категория е в отделна колона, всяка подкатегория ще бъде в отделна колона. `<ul>`, всяка подкатегория ще бъде в отделна колона. `<ol>`:

```latte
{foreach $items as $item}
Expand All @@ -176,9 +176,9 @@
<ol>
{iterateWhile}
<li>{$item->name}
{/iterateWhile $item->subCatId === $iterator->nextValue->subCatId}
{/iterateWhile $item->subcategoryId === $iterator->nextValue->subcategoryId}
</ol>
{/iterateWhile $item->catId === $iterator->nextValue->catId}
{/iterateWhile $item->categoryId === $iterator->nextValue->categoryId}
</ul>
{/foreach}
```
Expand Down
24 changes: 12 additions & 12 deletions latte/cs/cookbook/grouping.texy
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Značka `{iterateWhile}` se hodí na nejrůznější kejkle ve foreach cyklech.

Dejme tomu, že máme následující databázovou tabulku, kde jsou položky rozdělené do kategorií:

| id | catId | name
| id | categoryId | name
|------------------
| 1 | 1 | Apple
| 2 | 1 | Banana
Expand Down Expand Up @@ -51,7 +51,7 @@ Rovnou si ukážeme, jak snadno a elegantně se dá úkol vyřešit pomocí iter
<ul>
{iterateWhile}
<li>{$item->name}</li>
{/iterateWhile $item->catId === $iterator->nextValue->catId}
{/iterateWhile $item->categoryId === $iterator->nextValue->categoryId}
</ul>
{/foreach}
```
Expand Down Expand Up @@ -93,32 +93,32 @@ K čemu je takové použití iterateWhile dobré? Jak se liší od řešení, kt
Pokud bychom stejný úkol řešili zcela základními prostředky šablonovacích systému, například v Twig, Blade, nebo čistém PHP, vypadalo by řešení cca takto:

```latte
{var $prevCatId = null}
{var $prevCategoryId = null}
{foreach $items as $item}
{if $item->catId !== $prevCatId}
{if $item->categoryId !== $prevCategoryId}
{* změnila se kategorie *}

{* uzavřeme předchozí <ul>, pokud nejde o první položku *}
{if $prevCatId !== null}
{if $prevCategoryId !== null}
</ul>
{/if}

{* otevřeme nový seznam *}
<ul>

{do $prevCatId = $item->catId}
{do $prevCategoryId = $item->categoryId}
{/if}

<li>{$item->name}</li>
{/foreach}

{if $prevCatId !== null}
{if $prevCategoryId !== null}
{* uzavřeme poslední seznam *}
</ul>
{/if}
```

Tento kód je však nesrozumitelný a neintuitivní. Není vůbec jasná vazba mezi otevíracími a zavíracími HTML značkami. Není na první pohled vidět, jestli tam není nějaká chyba. A vyžaduje pomocné proměnné jako `$prevCatId`.
Tento kód je však nesrozumitelný a neintuitivní. Není vůbec jasná vazba mezi otevíracími a zavíracími HTML značkami. Není na první pohled vidět, jestli tam není nějaká chyba. A vyžaduje pomocné proměnné jako `$prevCategoryId`.

Oproti tomu řešení s `{iterateWhile}` je čisté, přehledné, nepotřebujeme pomocné proměnné a je blbuvzdorné.

Expand Down Expand Up @@ -154,7 +154,7 @@ Původní kód upravíme tak, že nejprve vykreslíme první položku a poté ve
{foreach $items as $item}
<h1>{$item->name}</h1>
<ul>
{iterateWhile $item->catId === $iterator->nextValue->catId}
{iterateWhile $item->categoryId === $iterator->nextValue->categoryId}
<li>{$item->name}</li>
{/iterateWhile}
</ul>
Expand All @@ -167,7 +167,7 @@ Vnořené smyčky

V rámci jednoho cyklu můžeme vytvářet více vnitřních smyček a dokonce je zanořovat. Takto by se daly seskupovat třeba podkategorie atd.

Dejme tomu, že v tabulce bude ještě další sloupec `subCatId` a kromě toho, že každá kategorie bude v samostatném `<ul>`, každá každý podkategorie samostatném `<ol>`:
Dejme tomu, že v tabulce bude ještě další sloupec `subcategoryId` a kromě toho, že každá kategorie bude v samostatném `<ul>`, každá každý podkategorie samostatném `<ol>`:

```latte
{foreach $items as $item}
Expand All @@ -176,9 +176,9 @@ Dejme tomu, že v tabulce bude ještě další sloupec `subCatId` a kromě toho,
<ol>
{iterateWhile}
<li>{$item->name}
{/iterateWhile $item->subCatId === $iterator->nextValue->subCatId}
{/iterateWhile $item->subcategoryId === $iterator->nextValue->subcategoryId}
</ol>
{/iterateWhile $item->catId === $iterator->nextValue->catId}
{/iterateWhile $item->categoryId === $iterator->nextValue->categoryId}
</ul>
{/foreach}
```
Expand Down
24 changes: 12 additions & 12 deletions latte/de/cookbook/grouping.texy
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Das Tag `{iterateWhile}` ist für verschiedene Tricks in foreach-Zyklen geeignet

Angenommen, wir haben die folgende Datenbanktabelle, in der die Elemente in Kategorien unterteilt sind:

| id | catId | name
| id | categoryId | name
|------------------
| 1 | 1 | Apple
| 2 | 1 | Banana
Expand Down Expand Up @@ -51,7 +51,7 @@ Wir werden Ihnen zeigen, wie einfach und elegant die Aufgabe mit iterateWhile ge
<ul>
{iterateWhile}
<li>{$item->name}</li>
{/iterateWhile $item->catId === $iterator->nextValue->catId}
{/iterateWhile $item->categoryId === $iterator->nextValue->categoryId}
</ul>
{/foreach}
```
Expand Down Expand Up @@ -93,32 +93,32 @@ Lösung ohne `{iterateWhile}` .[#toc-solution-without-iteratewhile]
Würden wir die gleiche Aufgabe mit ganz einfachen Konstruktionen von Template-Systemen lösen, zum Beispiel in Twig, Blade oder reinem PHP, würde die Lösung etwa so aussehen:

```latte
{var $prevCatId = null}
{var $prevCategoryId = null}
{foreach $items as $item}
{if $item->catId !== $prevCatId}
{if $item->categoryId !== $prevCategoryId}
{* die Kategorie hat sich geändert *}

{* wir schließen das vorherige <ul>, wenn es nicht das erste Element ist *}
{if $prevCatId !== null}
{if $prevCategoryId !== null}
</ul>
{/if}

{* wir öffnen eine neue Liste *}
<ul>

{do $prevCatId = $item->catId}
{do $prevCategoryId = $item->categoryId}
{/if}

<li>{$item->name}</li>
{/foreach}

{if $prevCatId !== null}
{if $prevCategoryId !== null}
{* wir schließen die letzte Liste *}
</ul>
{/if}
```

Dieser Code ist jedoch unverständlich und unintuitiv. Der Zusammenhang zwischen den öffnenden und schließenden HTML-Tags ist überhaupt nicht klar. Es ist nicht auf den ersten Blick klar, ob ein Fehler vorliegt. Und es werden Hilfsvariablen wie `$prevCatId` benötigt.
Dieser Code ist jedoch unverständlich und unintuitiv. Der Zusammenhang zwischen den öffnenden und schließenden HTML-Tags ist überhaupt nicht klar. Es ist nicht auf den ersten Blick klar, ob ein Fehler vorliegt. Und es werden Hilfsvariablen wie `$prevCategoryId` benötigt.

Im Gegensatz dazu ist die Lösung mit `{iterateWhile}` sauber, klar, benötigt keine Hilfsvariablen und ist narrensicher.

Expand Down Expand Up @@ -154,7 +154,7 @@ Dies ist z. B. dann nützlich, wenn Sie das erste Element in jeder Kategorie auf
{foreach $items as $item}
<h1>{$item->name}</h1>
<ul>
{iterateWhile $item->catId === $iterator->nextValue->catId}
{iterateWhile $item->categoryId === $iterator->nextValue->categoryId}
<li>{$item->name}</li>
{/iterateWhile}
</ul>
Expand All @@ -167,7 +167,7 @@ Verschachtelte Schleifen .[#toc-nested-loops]

Wir können mehrere innere Schleifen in einem Zyklus erstellen und sie sogar verschachteln. Auf diese Weise können zum Beispiel Unterkategorien gruppiert werden.

Angenommen, es gibt eine weitere Spalte in der Tabelle `subCatId` und jede Kategorie befindet sich nicht nur in einer separaten `<ul>`befindet, wird jede Unterkategorie in einer separaten `<ol>`:
Angenommen, es gibt eine weitere Spalte in der Tabelle `subcategoryId` und jede Kategorie befindet sich nicht nur in einer separaten `<ul>`befindet, wird jede Unterkategorie in einer separaten `<ol>`:

```latte
{foreach $items as $item}
Expand All @@ -176,9 +176,9 @@ Angenommen, es gibt eine weitere Spalte in der Tabelle `subCatId` und jede Kateg
<ol>
{iterateWhile}
<li>{$item->name}
{/iterateWhile $item->subCatId === $iterator->nextValue->subCatId}
{/iterateWhile $item->subcategoryId === $iterator->nextValue->subcategoryId}
</ol>
{/iterateWhile $item->catId === $iterator->nextValue->catId}
{/iterateWhile $item->categoryId === $iterator->nextValue->categoryId}
</ul>
{/foreach}
```
Expand Down
24 changes: 12 additions & 12 deletions latte/el/cookbook/grouping.texy
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

Ας υποθέσουμε ότι έχουμε τον ακόλουθο πίνακα της βάσης δεδομένων, όπου τα στοιχεία χωρίζονται σε κατηγορίες:

| id | catId | name
| id | categoryId | name
|------------------
| 1 | 1 | Apple
| 2 | 1 | Banana
Expand Down Expand Up @@ -51,7 +51,7 @@
<ul>
{iterateWhile}
<li>{$item->name}</li>
{/iterateWhile $item->catId === $iterator->nextValue->catId}
{/iterateWhile $item->categoryId === $iterator->nextValue->categoryId}
</ul>
{/foreach}
```
Expand Down Expand Up @@ -93,32 +93,32 @@
Αν λύναμε την ίδια εργασία με εντελώς βασικές κατασκευές συστημάτων προτύπων, για παράδειγμα σε Twig, Blade ή καθαρή PHP, η λύση θα έμοιαζε κάπως έτσι:

```latte
{var $prevCatId = null}
{var $prevCategoryId = null}
{foreach $items as $item}
{if $item->catId !== $prevCatId}
{if $item->categoryId !== $prevCategoryId}
{* η κατηγορία έχει αλλάξει *}

{* κλείνουμε το προηγούμενο <ul>, αν δεν είναι το πρώτο στοιχείο *}
{if $prevCatId !== null}
{if $prevCategoryId !== null}
</ul>
{/if}

{* θα ανοίξουμε μια νέα λίστα *}
<ul>

{do $prevCatId = $item->catId}
{do $prevCategoryId = $item->categoryId}
{/if}

<li>{$item->name}</li>
{/foreach}

{if $prevCatId !== null}
{if $prevCategoryId !== null}
{* κλείνουμε την προηγούμενη λίστα *}
</ul>
{/if}
```

Ωστόσο, αυτός ο κώδικας είναι ακατανόητος και μη διαισθητικός. Η σύνδεση μεταξύ των ετικετών HTML που ανοίγουν και κλείνουν δεν είναι καθόλου σαφής. Δεν είναι σαφές με την πρώτη ματιά αν υπάρχει κάποιο λάθος. Και απαιτεί βοηθητικές μεταβλητές όπως το `$prevCatId`.
Ωστόσο, αυτός ο κώδικας είναι ακατανόητος και μη διαισθητικός. Η σύνδεση μεταξύ των ετικετών HTML που ανοίγουν και κλείνουν δεν είναι καθόλου σαφής. Δεν είναι σαφές με την πρώτη ματιά αν υπάρχει κάποιο λάθος. Και απαιτεί βοηθητικές μεταβλητές όπως το `$prevCategoryId`.

Αντίθετα, η λύση με το `{iterateWhile}` είναι καθαρή, σαφής, δεν χρειάζεται βοηθητικές μεταβλητές και είναι αλάνθαστη.

Expand Down Expand Up @@ -154,7 +154,7 @@
{foreach $items as $item}
<h1>{$item->name}</h1>
<ul>
{iterateWhile $item->catId === $iterator->nextValue->catId}
{iterateWhile $item->categoryId === $iterator->nextValue->categoryId}
<li>{$item->name}</li>
{/iterateWhile}
</ul>
Expand All @@ -167,7 +167,7 @@

Μπορούμε να δημιουργήσουμε πολλαπλούς εσωτερικούς βρόχους σε έναν κύκλο και μάλιστα να τους φωλιάσουμε. Με αυτόν τον τρόπο, για παράδειγμα, θα μπορούσαν να ομαδοποιηθούν οι υποκατηγορίες.

Ας υποθέσουμε ότι υπάρχει μια άλλη στήλη στον πίνακα `subCatId` και εκτός από το ότι κάθε κατηγορία βρίσκεται σε ξεχωριστή `<ul>`, κάθε υποκατηγορία θα βρίσκεται σε μια ξεχωριστή `<ol>`:
Ας υποθέσουμε ότι υπάρχει μια άλλη στήλη στον πίνακα `subcategoryId` και εκτός από το ότι κάθε κατηγορία βρίσκεται σε ξεχωριστή `<ul>`, κάθε υποκατηγορία θα βρίσκεται σε μια ξεχωριστή `<ol>`:

```latte
{foreach $items as $item}
Expand All @@ -176,9 +176,9 @@
<ol>
{iterateWhile}
<li>{$item->name}
{/iterateWhile $item->subCatId === $iterator->nextValue->subCatId}
{/iterateWhile $item->subcategoryId === $iterator->nextValue->subcategoryId}
</ol>
{/iterateWhile $item->catId === $iterator->nextValue->catId}
{/iterateWhile $item->categoryId === $iterator->nextValue->categoryId}
</ul>
{/foreach}
```
Expand Down
Loading

0 comments on commit 9ea6f45

Please sign in to comment.