Skip to content

Commit

Permalink
application: improvements (#990)(#993)(#999)(#1002)
Browse files Browse the repository at this point in the history
  • Loading branch information
mildabre authored and dg committed Apr 27, 2023
1 parent 15b56d5 commit 65dc026
Show file tree
Hide file tree
Showing 64 changed files with 639 additions and 95 deletions.
23 changes: 21 additions & 2 deletions application/bg/ajax.texy
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,13 @@ AJAX и фрагменти

</div>

Заявката AJAX може да бъде открита чрез метода на услугата, който [капсулира HTTP заявката |http:request] `$httpRequest->isAjax()` (определя се въз основа на HTTP заглавието `X-Requested-With`). Съществува и съкратен метод в програмата за представяне: `$this->isAjax()`.

Заявката AJAX не се различава от обикновената заявка - водещият се извиква с определено представяне и параметри. От водещия зависи и как ще реагира: той може да използва процедурите си, за да върне фрагмент от HTML код, XML документ, JSON обект или част от Javascript код.
Заявка AJAX .[#toc-ajax-request]
================================

Заявката AJAX не се различава от класическата заявка - водещият се извиква с определен изглед и параметри. От водещия също зависи как да отговори на нея: той може да използва своя собствена процедура, която връща фрагмент от HTML код (HTML snippet), XML документ, JSON обект или JavaScript код.

От страна на сървъра AJAX заявката може да бъде открита с помощта на метода на услугата, [капсулиращ HTTP заявката |http:request] `$httpRequest->isAjax()` (открива се въз основа на HTTP заглавието `X-Requested-With`). Вътре в презентатора е наличен пряк път под формата на метода `$this->isAjax()`.

Съществува предварително обработен обект `payload`, предназначен за изпращане на данни към браузъра във формат JSON.

Expand Down Expand Up @@ -60,6 +64,21 @@ npm install naja
<script src="https://unpkg.com/naja@2/dist/Naja.min.js"></script>
```

За да създадете AJAX заявка от обикновена връзка (сигнал) или подаване на формуляр, просто маркирайте съответната връзка, формуляр или бутон с класа `ajax`:

```html
<a n:href="go!" class="ajax">Go</a>

<form n:name="form" class="ajax">
<input n:name="submit">
</form>

or
<form n:name="form">
<input n:name="submit" class="ajax">
</form>
```


Извадки .[#toc-snippety]
========================
Expand Down
15 changes: 14 additions & 1 deletion application/bg/bootstrap.texy
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ $configurator->addStaticParameters([
]);
```

Конфигурационните файлове могат да използват нормалния запис `%projectId%` за достъп до параметъра с име `projectId`. По подразбиране конфигураторът попълва следните параметри: `appDir`, `wwwDir`, `tempDir`, `vendorDir`, `debugMode` и `consoleMode`.
В конфигурационните файлове можем да запишем обичайната нотация `%projectId%`, за да получим достъп до параметъра с име `projectId`.


Динамични параметри .[#toc-dynamic-parameters]
Expand All @@ -197,6 +197,19 @@ $configurator->addDynamicParameters([
```


Параметри по подразбиране .[#toc-default-parameters]
----------------------------------------------------

Можете да използвате следните статични параметри в конфигурационните файлове:

- `%appDir%` е абсолютният път до директорията на файла `Bootstrap.php`
- `%wwwDir%` е абсолютният път до директорията, съдържаща входния файл `index.php`
- `%tempDir%` е абсолютният път до директорията за временни файлове
- `%vendorDir%` е абсолютният път до директорията, в която Composer инсталира библиотеки
- `%debugMode%` показва дали приложението е в режим на отстраняване на грешки
- `%consoleMode%` показва дали заявката е постъпила от командния ред


Внесени услуги .[#toc-imported-services]
----------------------------------------

Expand Down
4 changes: 2 additions & 2 deletions application/bg/presenters.texy
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ $url = $this->link('Product:show', [$id, 'lang' => 'en']);
$this->forward('Product:show');
```

Пример за временно пренасочване с HTTP код 302 или 303:
Пример за т.нар. временно пренасочване с HTTP код 302 (или 303, ако текущият метод на заявка е POST):

```php
$this->redirect('Product:show', $id);
Expand All @@ -170,7 +170,7 @@ $this->redirect('Product:show', $id);
$this->redirectPermanent('Product:show', $id);
```

Можете да пренасочите към друг URL адрес извън приложението, като използвате метода `redirectUrl()`:
Можете да пренасочите към друг URL адрес извън приложението, като използвате метода `redirectUrl()`. Като втори параметър може да се посочи HTTP кодът, като по подразбиране той е 302 (или 303, ако текущият метод на заявка е POST):

```php
$this->redirectUrl('https://nette.org');
Expand Down
4 changes: 3 additions & 1 deletion application/bg/templates.texy
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,9 @@ Nette използва системата за шаблони [Latte |latte:]. L
- `templates/<Presenter>/<view>.latte`
- `templates/<Presenter>.<view>.latte`

Ако шаблонът не е намерен, отговорът ще бъде [грешка 404 |presenters#error-404-etc].
Ако шаблонът не бъде намерен, ще се опита да търси в директорията `templates` едно ниво по-нагоре, т.е. на същото ниво като директорията с класа на водещия.

Ако шаблонът не бъде намерен и там, отговорът ще бъде [грешка 404 |presenters#Error 404 etc.].

Можете също така да промените изгледа с помощта на `$this->setView('jineView')`. Или вместо да търсите директно, посочете името на файла с шаблона, като използвате `$this->template->setFile('/path/to/template.latte')`.

Expand Down
21 changes: 20 additions & 1 deletion application/cs/ajax.texy
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,14 @@ Moderní webové aplikace dnes běží napůl na serveru, napůl v prohlížeči

</div>

AJAXový požadavek lze detekovat metodou služby [zapouzdřující HTTP požadavek |http:request] `$httpRequest->isAjax()` (detekuje podle HTTP hlavičky `X-Requested-With`). Uvnitř presenteru je k dispozici "zkratka" v podobě metody `$this->isAjax()`.

AJAXový požadavek
=================

AJAXový požadavek se nijak neliší od klasického požadavku - je zavolán presenter s určitým view a parametry. Je také věcí presenteru, jak bude na něj reagovat: může použít vlastní rutinu, která vrátí nějaký fragment HTML kódu (HTML snippet), XML dokument, JSON objekt nebo kód v JavaScriptu.

Na straně serveru lze AJAXový požadavek detekovat metodou služby [zapouzdřující HTTP požadavek |http:request] `$httpRequest->isAjax()` (detekuje podle HTTP hlavičky `X-Requested-With`). Uvnitř presenteru je k dispozici "zkratka" v podobě metody `$this->isAjax()`.

Pro odesílání dat prohlížeči ve formátu JSON lze využít předpřipravený objekt `payload`:

```php
Expand Down Expand Up @@ -60,6 +64,21 @@ npm install naja
<script src="https://unpkg.com/naja@2/dist/Naja.min.js"></script>
```

Aby se z obyčejného odkazu (signálu) nebo odeslání formuláře vytvořil AJAXový požadavek, stačí označit příslušný odkaz, formulář nebo tlačítko třídou `ajax`:

```html
<a n:href="go!" class="ajax">Go</a>

<form n:name="form" class="ajax">
<input n:name="submit">
</form>

nebo
<form n:name="form">
<input n:name="submit" class="ajax">
</form>
```


Snippety
========
Expand Down
15 changes: 14 additions & 1 deletion application/cs/bootstrap.texy
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ $configurator->addStaticParameters([
]);
```

Na parametr `projectId` se lze v konfiguraci odkázat obvyklým zápisem `%projectId%`. Třída Configurator automaticky přidává parametry `appDir`, `wwwDir`, `tempDir`, `vendorDir`, `debugMode` a `consoleMode`.
Na parametr `projectId` se lze v konfiguraci odkázat obvyklým zápisem `%projectId%`.


Dynamické parametry
Expand All @@ -197,6 +197,19 @@ $configurator->addDynamicParameters([
```


Výchozí parametry
-----------------

V konfiguračních souborech můžete využít tyto statické parametry:

- `%appDir%` je absolutní cesta k adresáři se souborem `Bootstrap.php`
- `%wwwDir%` je absolutní cesta k adresáři se vstupním souborem `index.php`
- `%tempDir%` je absolutní cesta k adresáři pro dočasné soubory
- `%vendorDir%` je absolutní cesta k adresáři, kam Composer instaluje knihovny
- `%debugMode%` udává, zda je aplikace v debugovacím režimu
- `%consoleMode%` udává, zda request přišel přes příkazovou řádku


Importované služby
------------------

Expand Down
4 changes: 2 additions & 2 deletions application/cs/presenters.texy
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ Metoda `forward()` přejde na nový presenter okamžitě bez HTTP přesměrován
$this->forward('Product:show');
```

Příklad tzv. dočasného přesměrování s HTTP kódem 302 nebo 303:
Příklad tzv. dočasného přesměrování s HTTP kódem 302 (nebo 303, je-li metoda aktuálního požadavku POST):

```php
$this->redirect('Product:show', $id);
Expand All @@ -170,7 +170,7 @@ Permanentní přesměrování s HTTP kódem 301 docílíte takto:
$this->redirectPermanent('Product:show', $id);
```

Na jinou URL mimo aplikaci lze přesměrovat metodou `redirectUrl()`:
Na jinou URL mimo aplikaci lze přesměrovat metodou `redirectUrl()`. Jako druhý parametr lze uvést HTTP kód, výchozí je 302 (nebo 303, je-li metoda aktuálního požadavku POST):

```php
$this->redirectUrl('https://nette.org');
Expand Down
4 changes: 3 additions & 1 deletion application/cs/templates.texy
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,9 @@ Cestu k šablonám odvodí presenter podle jednoduché logiky. Zkusí, zda exist
- `templates/<Presenter>/<view>.latte`
- `templates/<Presenter>.<view>.latte`

Pokud šablonu nenajde, je odpovědí [chyba 404|presenters#Chyba 404 a spol.].
Pokud šablonu nenajde, zkusí hledat ještě v adresáři `templates` o úroveň výš, tj. na stejné úrovni, jako je adresář s třídou presenteru.

Pokud ani tam šablonu nenajde, je odpovědí [chyba 404|presenters#Chyba 404 a spol.].

Můžete také změnit view pomocí `$this->setView('jineView')`. Nebo místo dohledávání přímo určit jméno souboru se šablonou pomocí `$this->template->setFile('/path/to/template.latte')`.

Expand Down
23 changes: 21 additions & 2 deletions application/de/ajax.texy
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,13 @@ Moderne Webanwendungen laufen heute zur Hälfte auf einem Server und zur Hälfte

</div>

Eine AJAX-Anfrage kann mit einer Methode eines Dienstes, [der eine HTTP-Anfrage kapselt |http:request], erkannt werden `$httpRequest->isAjax()` (erkennt anhand des `X-Requested-With` HTTP-Headers). Es gibt auch eine Kurzform der Methode in Presenter: `$this->isAjax()`.

Eine AJAX-Anfrage unterscheidet sich nicht von einer normalen Anfrage - ein Presenter wird mit einer bestimmten Ansicht und Parametern aufgerufen. Auch hier ist es dem Präsentator überlassen, wie er reagiert: Er kann seine Routinen nutzen, um entweder ein Fragment von HTML-Code (ein Snippet), ein XML-Dokument, ein JSON-Objekt oder ein Stück Javascript-Code zurückzugeben.
AJAX-Anfrage .[#toc-ajax-request]
=================================

Eine AJAX-Anfrage unterscheidet sich nicht von einer klassischen Anfrage - der Presenter wird mit einer bestimmten Ansicht und Parametern aufgerufen. Es liegt auch am Präsentator, wie er darauf reagiert: Er kann seine eigene Routine verwenden, die ein HTML-Codefragment (HTML-Snippet), ein XML-Dokument, ein JSON-Objekt oder JavaScript-Code zurückgibt.

Auf der Serverseite kann eine AJAX-Anfrage mit Hilfe der Servicemethode erkannt werden [, die die HTTP-Anfrage kapselt |http:request] `$httpRequest->isAjax()` (erkennt auf der Grundlage des HTTP-Headers `X-Requested-With`). Innerhalb des Presenters ist eine Abkürzung in Form der Methode `$this->isAjax()` verfügbar.

Es gibt ein vorverarbeitetes Objekt namens `payload`, das für das Senden von Daten in JSON an den Browser bestimmt ist.

Expand Down Expand Up @@ -60,6 +64,21 @@ npm install naja
<script src="https://unpkg.com/naja@2/dist/Naja.min.js"></script>
```

Um eine AJAX-Anfrage aus einem regulären Link (Signal) oder einer Formularübermittlung zu erzeugen, markieren Sie einfach den entsprechenden Link, das Formular oder die Schaltfläche mit der Klasse `ajax`:

```html
<a n:href="go!" class="ajax">Go</a>

<form n:name="form" class="ajax">
<input n:name="submit">
</form>

or
<form n:name="form">
<input n:name="submit" class="ajax">
</form>
```


Schnipsel .[#toc-snippets]
==========================
Expand Down
15 changes: 14 additions & 1 deletion application/de/bootstrap.texy
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ $configurator->addStaticParameters([
]);
```

In Konfigurationsdateien können wir die übliche Notation `%projectId%` verwenden, um auf den Parameter mit dem Namen `projectId` zuzugreifen. Standardmäßig füllt der Configurator die folgenden Parameter aus: `appDir`, `wwwDir`, `tempDir`, `vendorDir`, `debugMode` und `consoleMode`.
In Konfigurationsdateien können wir die übliche Notation `%projectId%` verwenden, um auf den Parameter `projectId` zuzugreifen.


Dynamische Parameter .[#toc-dynamic-parameters]
Expand All @@ -197,6 +197,19 @@ $configurator->addDynamicParameters([
```


Standard-Parameter .[#toc-default-parameters]
---------------------------------------------

Sie können die folgenden statischen Parameter in den Konfigurationsdateien verwenden:

- `%appDir%` ist der absolute Pfad zu dem Verzeichnis, in dem sich die Datei `Bootstrap.php` befindet
- `%wwwDir%` ist der absolute Pfad zu dem Verzeichnis, das die `index.php` Eintragsdatei enthält
- `%tempDir%` ist der absolute Pfad zu dem Verzeichnis für temporäre Dateien
- `%vendorDir%` ist der absolute Pfad zu dem Verzeichnis, in dem Composer die Bibliotheken installiert
- `%debugMode%` gibt an, ob sich die Anwendung im Debug-Modus befindet
- `%consoleMode%` zeigt an, ob die Anfrage über die Befehlszeile kam


Importierte Dienste .[#toc-imported-services]
---------------------------------------------

Expand Down
4 changes: 2 additions & 2 deletions application/de/presenters.texy
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ Die `forward()` schaltet ohne HTTP-Umleitung sofort auf den neuen Präsentator u
$this->forward('Product:show');
```

Beispiel einer temporären Umleitung mit HTTP-Code 302 oder 303:
Beispiel für eine so genannte temporäre Umleitung mit HTTP-Code 302 (oder 303, wenn die aktuelle Anfragemethode POST ist):

```php
$this->redirect('Product:show', $id);
Expand All @@ -170,7 +170,7 @@ Um eine dauerhafte Umleitung mit HTTP-Code 301 zu erreichen, verwenden Sie:
$this->redirectPermanent('Product:show', $id);
```

Sie können mit der Methode `redirectUrl()` zu einer anderen URL außerhalb der Anwendung umleiten:
Sie können mit der Methode `redirectUrl()` zu einer anderen URL außerhalb der Anwendung umleiten. Der HTTP-Code kann als zweiter Parameter angegeben werden, wobei der Standardwert 302 ist (oder 303, wenn die aktuelle Anforderungsmethode POST ist):

```php
$this->redirectUrl('https://nette.org');
Expand Down
4 changes: 3 additions & 1 deletion application/de/templates.texy
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,9 @@ Der Pfad zu den Vorlagen wird nach einer einfachen Logik hergeleitet. Es wird ve
- `templates/<Presenter>/<view>.latte`
- `templates/<Presenter>.<view>.latte`

Wenn die Vorlage nicht gefunden wird, wird der [Fehler 404 |presenters#Error 404 etc.] ausgegeben.
Wird die Vorlage nicht gefunden, wird versucht, im Verzeichnis `templates` eine Ebene höher zu suchen, d. h. auf der gleichen Ebene wie das Verzeichnis mit der Presenter-Klasse.

Wenn die Vorlage auch dort nicht gefunden wird, ist die Antwort ein [404-Fehler |presenters#Error 404 etc.].

Sie können die Ansicht auch mit `$this->setView('otherView')` ändern. Oder geben Sie statt der Suche direkt den Namen der Vorlagendatei mit `$this->template->setFile('/path/to/template.latte')` an.

Expand Down
23 changes: 21 additions & 2 deletions application/el/ajax.texy
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,13 @@ AJAX & Snippets

</div>

Μια αίτηση AJAX μπορεί να ανιχνευθεί με τη χρήση μιας μεθόδου μιας υπηρεσίας που [ενθυλακώνει μια αίτηση HTTP |http:request] `$httpRequest->isAjax()` (ανιχνεύει με βάση την επικεφαλίδα `X-Requested-With` HTTP). Υπάρχει επίσης μια σύντομη μέθοδος στο presenter: `$this->isAjax()`.

Μια αίτηση AJAX δεν διαφέρει από μια κανονική αίτηση - καλείται ένας παρουσιαστής με μια συγκεκριμένη προβολή και παραμέτρους. Εξαρτάται, επίσης, από τον παρουσιαστή πώς θα αντιδράσει: μπορεί να χρησιμοποιήσει τις ρουτίνες του για να επιστρέψει είτε ένα τμήμα κώδικα HTML (ένα απόσπασμα), ένα έγγραφο XML, ένα αντικείμενο JSON ή ένα κομμάτι κώδικα Javascript.
Αίτηση AJAX .[#toc-ajax-request]
================================

Ένα αίτημα AJAX δεν διαφέρει από ένα κλασικό αίτημα - ο παρουσιαστής καλείται με μια συγκεκριμένη προβολή και παραμέτρους. Εξαρτάται επίσης από τον παρουσιαστή πώς θα απαντήσει σε αυτό: μπορεί να χρησιμοποιήσει τη δική του ρουτίνα, η οποία επιστρέφει ένα τμήμα κώδικα HTML (απόσπασμα HTML), ένα έγγραφο XML, ένα αντικείμενο JSON ή κώδικα JavaScript.

Από την πλευρά του διακομιστή, ένα αίτημα AJAX μπορεί να ανιχνευθεί χρησιμοποιώντας τη μέθοδο service που [ενθυλακώνει το αίτημα HTTP |http:request] `$httpRequest->isAjax()` (ανιχνεύει με βάση την επικεφαλίδα HTTP `X-Requested-With`). Στο εσωτερικό του παρουσιαστή, είναι διαθέσιμη μια συντόμευση με τη μορφή της μεθόδου `$this->isAjax()`.

Υπάρχει ένα προεπεξεργασμένο αντικείμενο που ονομάζεται `payload` και είναι αφιερωμένο στην αποστολή δεδομένων στο πρόγραμμα περιήγησης σε JSON.

Expand Down Expand Up @@ -60,6 +64,21 @@ npm install naja
<script src="https://unpkg.com/naja@2/dist/Naja.min.js"></script>
```

Για να δημιουργήσετε μια αίτηση AJAX από έναν κανονικό σύνδεσμο (σήμα) ή μια υποβολή φόρμας, απλά επισημάνετε τον σχετικό σύνδεσμο, τη φόρμα ή το κουμπί με την κλάση `ajax`:

```html
<a n:href="go!" class="ajax">Go</a>

<form n:name="form" class="ajax">
<input n:name="submit">
</form>

or
<form n:name="form">
<input n:name="submit" class="ajax">
</form>
```


Snippets .[#toc-snippets]
=========================
Expand Down
Loading

0 comments on commit 65dc026

Please sign in to comment.