Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
119 commits
Select commit Hold shift + click to select a range
69965ae
added best-practices/microsites
dg Sep 6, 2023
7d347b4
latte 3.0.9
dg Sep 8, 2023
3362e5d
filesystem: link to Finder
dg Sep 12, 2023
5ab9698
own page for StaticClass
dg Sep 12, 2023
bdeca62
improved smartobject
dg Sep 12, 2023
8a961eb
nette/utils 4.0.1
dg Jan 17, 2024
93ff78a
nette/utils 4.0.2
dg Sep 19, 2023
4fcabd8
latte: info about Latte\Runtime\Html
dg Sep 19, 2023
bafbffb
Tracy: added mappings
dg Sep 22, 2023
bd38bde
robot-loader: info about standalone usage
dg Sep 26, 2023
95f937e
typo
dg Sep 27, 2023
cde7d29
neon: improved syntax description
dg Sep 27, 2023
9646248
di: neon syntax improvements
dg Sep 27, 2023
85b137c
turning cache off
dg Oct 2, 2023
b34a7ca
typo [closes #1022]
dg Oct 5, 2023
40e17f5
nette/di v3.1.8 [Closes #1031]
dg Oct 2, 2023
a8ece7a
nette/schema 1.2.5
dg Oct 4, 2023
43d6215
nette/application v3.1.14
dg Oct 4, 2023
6a5ebe1
improvements
dg Oct 5, 2023
35101fb
nette/forms 3.1.12
dg Oct 10, 2023
ef84794
latte 3.0.10
dg Oct 11, 2023
12e2d54
services: improved text
dg Oct 13, 2023
71f5cfb
form validation: improved
dg Oct 15, 2023
58166cb
forms: used unpkg.com for netteForms
dg Oct 15, 2023
fc920eb
ajax: improved
dg Oct 15, 2023
8427ee1
forms: improved in about disabled fields
dg Oct 20, 2023
2b7b21a
intro to oop
dg Oct 24, 2023
470c613
links to oop
dg Oct 25, 2023
32a6f53
fixed link
dg Oct 25, 2023
bd232a8
Typo (#1034)
pat0s Oct 29, 2023
8e3a29f
nette/forms 3.1.14
dg Oct 29, 2023
e3a4ac4
nette/utils 4.0.2
dg Oct 29, 2023
36171f6
php-generator: improved perex etc
dg Nov 1, 2023
0be2e7e
robot-loader: improved translation
dg Nov 1, 2023
a5a9583
php-generator: improved EN translation
dg Nov 1, 2023
fb2b197
latte 3.0.12
dg Nov 9, 2023
d18a54b
updated PHP requirements
dg Nov 13, 2023
97064a4
composer: ignore upper boundary
dg Nov 21, 2023
c62f118
forms 3.1.15
dg Nov 11, 2023
baebce6
nette/database v3.2
dg Dec 14, 2023
1956b1c
Arrays::associate
dg Nov 25, 2023
8dc3152
typo (#1036)
Jonezzyboy Dec 26, 2023
461b6fa
troubleshooting: fixed info
dg Dec 26, 2023
bdca558
neon: added missing parameter (#1037)
sallyx Dec 26, 2023
b698ccb
typo
dg Dec 31, 2023
56bde14
nette/utils 4.0.4
dg Jan 17, 2024
a99d512
tester: option -l replaced with -o
smuuf Jan 21, 2024
b447533
nette/tester 2.5.2
dg Jan 21, 2024
63f10b1
nette/http 3.2.4
dg Jan 30, 2024
fdecd47
nette/application 3.2
dg Feb 8, 2024
d38b3cf
nette/component-model 3.1.0
dg Feb 8, 2024
a55e9c7
nette/di 3.2
dg Feb 12, 2024
62cf754
added utils/upgrading
dg Mar 2, 2024
160b668
typo
nextMJ Feb 17, 2024
f932041
updated web-project
dg Feb 18, 2024
1f65728
migrations updated
dg Mar 2, 2024
4fcc406
migration guide for Nette 3.2 [WIP]
dg Feb 10, 2023
fd6b154
oop: improvements
dg Mar 10, 2024
f33c95a
nette/application 3.2.1
dg Mar 11, 2024
0195403
floats: note about precision
dg Mar 12, 2024
2cf34aa
typo (#1046)
mildabre Mar 18, 2024
5c685c2
Fixed PhpStorm typo (#1045)
hermajan Mar 18, 2024
ee998de
application: better wording [Closes nette/application#323]
dg Mar 19, 2024
1eeb8c8
Grammar corrected in documentation (#1044)
rastographics Mar 19, 2024
385ef56
Typo. (#1042)
radekdostal Mar 19, 2024
746be14
latte: vscode plugin
dg Apr 3, 2024
49541dc
typo
dg Apr 4, 2024
43a3990
typo
dg Apr 18, 2024
905c5a4
uses GitHub Actions
dg Apr 4, 2024
b4acaf8
latte: simplified "{..}"
dg Apr 6, 2024
c6737e3
typo
dg Apr 15, 2024
67d0eab
nette/application 3.2.3
dg Apr 18, 2024
8974872
nette/application 3.2.3: new directory structure
dg Apr 18, 2024
5a8ec70
new directory structure throughout documentation
dg Apr 18, 2024
ca2c925
best practices: attribute Requires
dg Apr 18, 2024
dd924c1
nette/bootstrap 3.2.3
dg Apr 19, 2024
70575af
forms: info about hidden field security
dg Apr 22, 2024
edf99fc
typo
dg Apr 25, 2024
9fdffea
tracy: AJAX debugging
dg May 2, 2024
b8cc3a3
tester 2.5.3
dg May 3, 2024
a8ea090
forms: missing information added
dg May 5, 2024
2c8bafb
forms: slightly improved HTML attributes
dg May 5, 2024
83db98b
nette/database 3.2.1
dg May 7, 2024
f23722f
iteratewhile -> grouping
dg May 14, 2024
cb8fb99
latte 3.0.16
dg May 14, 2024
e0f541e
latte: adding |group to the grouping
dg May 14, 2024
c35880e
latte: pictograms
dg May 16, 2024
d870d6a
http: missing fragment warning
dg May 17, 2024
7de788c
latte: added passing-variables
dg May 20, 2024
c44211b
typo
dg May 24, 2024
aae4351
routing: better wording
dg May 28, 2024
a3d5712
bootstrap: $appDir -> $rootDir
dg Aug 3, 2024
feb8491
nette/forms 3.2.4
dg Aug 5, 2024
b64eace
latte 3.0.18
dg Aug 6, 2024
f1bd69f
typo (#1052)
buffus Aug 6, 2024
975a88c
nette/caching 3.3.1
dg Aug 7, 2024
846221e
nette/utils 4.0.5
dg Aug 7, 2024
13d4470
nette/database 3.2.4
dg Aug 9, 2024
ea66fe8
typo
dg Sep 4, 2024
aeb7097
php-generator 4.1.6
dg Sep 10, 2024
16181a4
nette/application 3.2.6
dg Jun 9, 2024
d8f3f80
new translation wip
dg Sep 1, 2024
b0de7ec
latte improved
dg Sep 4, 2024
b7f1ba6
Typos (#1057)
mezotv Oct 4, 2024
bdde973
typo [Closes #1050]
dg Oct 4, 2024
a33ad75
nette/schema 1.3.2
dg Oct 5, 2024
a6271a5
typo
dg Oct 23, 2024
5028b64
Forms: added missing parameters
dg Oct 23, 2024
88e5c68
fixed type hints
dg Oct 23, 2024
ba24c4e
[filter] has same signature as [method]
dg Oct 23, 2024
0f2188a
typo
jvitasek Oct 23, 2024
932c8db
ajax: Naja initialization info [Closes #1053]
dg Oct 23, 2024
48401ac
upgrading: added exception class change info (finder) [Closes #1051]
rixafy Jul 1, 2024
9831113
typo [Closes #1049]
diegosardina Jun 9, 2024
f99ff6f
better wording [Closes #1038][Closes #1040][Closes #1026][Closes #10…
mildabre Jan 24, 2024
2381d0d
typo [Closes #1024]
mabar Jun 25, 2023
a75ee13
components: added info about redirect after signal [Closes #1017]
dg May 30, 2023
6c64b1f
new Bootstrap API
dg Oct 24, 2024
3676c22
Moving up chapter "Události" + highlight heading
mildabre Nov 3, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
added best-practices/microsites
  • Loading branch information
dg committed Apr 18, 2024
commit 69965aec393083158dbb05aa435599fc546d893a
1 change: 1 addition & 0 deletions best-practices/bg/@home.texy
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
Обща
----
- [Как да заредим конфигурационен файл |bootstrap:]
- [Как да пишем микросайтове |microsites]
- [Защо Nette използва константна нотация PascalCase? |https://blog.nette.org/bg/za-po-malko-kresene-v-koda]
- [Защо Nette не използва суфикса Interface? |https://blog.nette.org/bg/prefiksite-i-sufiksite-ne-prinadlezat-na-imenata-na-interfejsite]
- [Съвети за използване на Composer |composer]
Expand Down
63 changes: 63 additions & 0 deletions best-practices/bg/microsites.texy
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
Как да пишем микросайтове
*************************

Представете си, че трябва бързо да създадете малък уебсайт за предстоящо събитие на вашата компания. Той трябва да бъде прост, бърз и без излишни усложнения. Може би си мислите, че такъв малък проект не изисква стабилна рамка. Но какво ще кажете, ако използването на рамката Nette може значително да опрости и ускори този процес?

Дори когато създавате прости уебсайтове, не искате да се отказвате от комфорта. Не искате да изобретявате колелото наново. Чувствайте се свободни да бъдете мързеливи и да се поглезите. Рамката Nette може да се използва отлично и като микрорамка.

Как може да изглежда един такъв микросайт? Например, целият код на уебсайта може да бъде поставен в един файл `index.php` в публичната папка:

```php
<?php

require __DIR__ . '/../vendor/autoload.php';

$configurator = new Nette\Bootstrap\Configurator;
$configurator->enableTracy(__DIR__ . '/../log');
$configurator->setTempDirectory(__DIR__ . '/../temp');

// създаване на контейнер DI въз основа на конфигурацията в config.neon
$configurator->addConfig(__DIR__ . '/../app/config.neon');
$container = $configurator->createContainer();

// настройка на маршрутизацията
$router = new Nette\Application\Routers\RouteList;
$container->addService('router', $router);

// маршрут за URL https://example.com/
$router->addRoute('', function ($presenter, Nette\Http\Request $httpRequest) {
// разпознаване на езика на браузъра и пренасочване към URL /en или /de и т.н.
$supportedLangs = ['en', 'de', 'cs'];
$lang = $httpRequest->detectLanguage($supportedLangs) ?: reset($supportedLangs);
$presenter->redirectUrl("/$lang");
});

// маршрут за URL https://example.com/cs или https://example.com/en
$router->addRoute('<lang cs|en>', function ($presenter, string $lang) {
// покажете съответния шаблон, например ../templates/en.latte
$template = $presenter->createTemplate()
->setFile(__DIR__ . '/../templates/' . $lang . '.latte');
return $template;
});

// стартирайте приложението!
$container->getByType(Nette\Application\Application::class)->run();
```

Всичко останало ще бъде шаблони, съхранявани в родителската папка `/templates`.

PHP кодът в `index.php` първо настройва [средата |bootstrap:], след това дефинира [маршрути |application:routing#dynamic-routing-with-callbacks] и накрая стартира приложението. Предимството е, че вторият параметър на функцията `addRoute()` може да бъде извикващо се име, което се изпълнява при отваряне на съответната страница.


Защо да използвате Nette за микросайтове? .[#toc-why-use-nette-for-microsites]
------------------------------------------------------------------------------

- Разработчиците, които някога са опитвали [Трейси |tracy:], днес не могат да си представят кодирането без него.
- Но преди всичко ще използвате системата за шаблониране [Latte |latte:], защото само от 2 страници ще искате да разделите [оформлението и съдържанието |latte:template-inheritance].
- И със сигурност искате да разчитате на [автоматичното ескапиране, |latte:safety-first] за да предотвратите XSS уязвимости.
- Nette също така гарантира, че в случай на грешка никога няма да бъдат показвани съобщения за грешка на PHP, а вместо това ще бъде показана удобна за потребителя страница.
- Ако искате да получавате обратна връзка от потребителите, например под формата на форма за контакт, можете да добавите и [форми |forms:] и [база данни |database:].
- Можете също така лесно да [изпратите |mail:] попълнените формуляри [по имейл |mail:].
- Понякога може да ви е полезно [кеширането |caching:], например при изтегляне и показване на емисии.

В днешната епоха, в която скоростта и ефективността са от ключово значение, е важно да разполагате с инструменти, които ви позволяват да постигате резултати без излишни забавяния. Рамката Nette предлага точно това - бърза разработка, сигурност и широк набор от инструменти като Tracy и Latte, които опростяват процеса. Достатъчно е да инсталирате няколко пакета на Nette и изграждането на такъв микросайт се превръща в лесна задача. И знаете, че няма скрити недостатъци в сигурността.
1 change: 1 addition & 0 deletions best-practices/cs/@home.texy
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ Formuláře
Obecné
------
- [Jak načíst konfigurační soubor |bootstrap:]
- [Jak psát mikro-weby |microsites]
- [Proč Nette používá PascalCase notaci konstant? |https://blog.nette.org/cs/za-mene-kriku-v-kodu]
- [Proč Nette nepoužívá příponu Interface? |https://blog.nette.org/cs/predpony-a-pripony-do-nazvu-rozhrani-nepatri]
- [Composer: tipy pro použití |composer]
Expand Down
63 changes: 63 additions & 0 deletions best-practices/cs/microsites.texy
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
Jak psát mikro-weby
*******************

Představte si, že potřebujete rychle vytvořit malý web pro nadcházející akci vaší firmy. Má to být jednoduché, rychlé a bez zbytečných komplikací. Možná si myslíte, že pro tak malý projekt nepotřebujete robustní framework. Ale co když použití Nette frameworku může tento proces zásadně zjednodušit a zrychlit?

Přece i při tvorbě jednoduchých webů se nechcete vzdát pohodlí. Nechcete vymýšlet to, co už bylo jednou vyřešené. Buďte klidně líný a nechte se rozmazlovat. Nette Framework lze skvěle využít i jako micro framework.

Jak takový microsite může vypadat? Například tak, že celý kód webu umístíme do jediného souboru `index.php` ve veřejné složce:

```php
<?php

require __DIR__ . '/../vendor/autoload.php';

$configurator = new Nette\Bootstrap\Configurator;
$configurator->enableTracy(__DIR__ . '/../log');
$configurator->setTempDirectory(__DIR__ . '/../temp');

// vytvoř DI kontejner na základě konfigurace v config.neon
$configurator->addConfig(__DIR__ . '/../app/config.neon');
$container = $configurator->createContainer();

// nastavíme routing
$router = new Nette\Application\Routers\RouteList;
$container->addService('router', $router);

// routa pro URL https://example.com/
$router->addRoute('', function ($presenter, Nette\Http\Request $httpRequest) {
// detekujeme jazyk prohlížeče a přesměrujeme na URL /en nebo /de atd.
$supportedLangs = ['en', 'de', 'cs'];
$lang = $httpRequest->detectLanguage($supportedLangs) ?: reset($supportedLangs);
$presenter->redirectUrl("/$lang");
});

// routa pro URL https://example.com/cs nebo https://example.com/en
$router->addRoute('<lang cs|en>', function ($presenter, string $lang) {
// zobrazíme příslušnou šablonu, například ../templates/en.latte
$template = $presenter->createTemplate()
->setFile(__DIR__ . '/../templates/' . $lang . '.latte');
return $template;
});

// spusť aplikaci!
$container->getByType(Nette\Application\Application::class)->run();
```

Vše ostatní budou šablony uložené v nadřazené složce `/templates`.

PHP kód v `index.php` nejprve [připraví prostředí |bootstrap:], poté definuje [routy|application:routing#dynamicke-routovani-s-callbacky] a nakonec spustí aplikaci. Výhodou je, že druhý parametr funkce `addRoute()` může být callable, který se po otevření odpovídající stránky vykoná.


Proč používat Nette pro microsite?
----------------------------------

- Programátoři, kteří někdy vyzkoušeli [Tracy|tracy:], si dnes neumí představit, že by něco programovali bez ní.
- Především ale využijete šablonovací systém [Latte|latte:], protože už od 2 stránek budete chtít mít oddělený [layout a obsah|latte:template-inheritance].
- A rozhodně se chcete spolehout na [automatické escapování |latte:safety-first], aby nevznikla zranitelnost XSS
- Nette taky zajistí, že se při chybě nikdy neobrazí programátorské chybové hlášky PHP, ale uživateli srozumitelná stránka.
- Pokud chcete získávat zpětnou vazbu od uživatelů, například v podobě kontaktního formuláře, tak ještě přidáte [formuláře|forms:] a [databázi|database:].
- Vyplněné formuláře si taktéž můžete nechat snadno [odesílat emailem|mail:].
- Někdy se vám může hodit [kešování|caching:], například pokud stahujete a zobrazujete feedy.

V dnešní době, kdy je rychlost a efektivita klíčová, je důležité mít nástroje, které vám umožní dosáhnout výsledků bez zbytečného zdržování. Nette framework vám nabízí právě to - rychlý vývoj, bezpečnost a širokou škálu nástrojů, jako je Tracy a Latte, které zjednodušují proces. Stačí nainstalovat pár Nette balíčků a vybudovat takovou microsite je najednou úplná hračka. A víte, že se nikde neskrývá žádná bezpečnostní díra.
1 change: 1 addition & 0 deletions best-practices/de/@home.texy
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ Formulare
Allgemein
---------
- [Wie man eine Konfigurationsdatei lädt |bootstrap:]
- [Wie man Microsites schreibt |microsites]
- [Warum verwendet Nette die Konstantenschreibweise PascalCase? |https://blog.nette.org/de/fuer-weniger-geschrei-im-code]
- [Warum verwendet Nette nicht das Suffix Interface? |https://blog.nette.org/de/praefixe-und-suffixe-gehoeren-nicht-in-schnittstellennamen]
- [Tipps zur Verwendung des Composers |composer]
Expand Down
63 changes: 63 additions & 0 deletions best-practices/de/microsites.texy
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
Wie man Microsites schreibt
***************************

Stellen Sie sich vor, Sie müssen schnell eine kleine Website für eine bevorstehende Veranstaltung Ihres Unternehmens erstellen. Sie soll einfach, schnell und ohne unnötige Komplikationen sein. Sie denken vielleicht, dass ein solch kleines Projekt kein robustes Framework benötigt. Aber was wäre, wenn die Verwendung des Nette-Frameworks diesen Prozess erheblich vereinfachen und beschleunigen könnte?

Auch bei der Erstellung einfacher Websites wollen Sie nicht auf Komfort verzichten. Sie wollen das Rad nicht neu erfinden. Seien Sie ruhig faul und gönnen Sie sich etwas. Das Nette Framework lässt sich auch hervorragend als Micro-Framework einsetzen.

Wie könnte eine solche Microsite aussehen? Zum Beispiel kann der gesamte Code der Website in einer einzigen `index.php` Datei im öffentlichen Ordner untergebracht werden:

```php
&lt;?php

require __DIR__ . '/../vendor/autoload.php';

$configurator = new Nette\Bootstrap\Configurator;
$configurator->enableTracy(__DIR__ . '/../log');
$configurator->setTempDirectory(__DIR__ . '/../temp');

// einen DI-Container auf der Grundlage der Konfiguration in config.neon erstellen
$configurator->addConfig(__DIR__ . '/../app/config.neon');
$container = $configurator->createContainer();

// Routing einrichten
$router = new Nette\Application\Routers\RouteList;
$container->addService('router', $router);

// Route für URL https://example.com/
$router->addRoute('', function ($presenter, Nette\Http\Request $httpRequest) {
// Erkennung der Browsersprache und Umleitung auf URL /en oder /de usw.
$supportedLangs = ['en', 'de', 'cs'];
$lang = $httpRequest->detectLanguage($supportedLangs) ?: reset($supportedLangs);
$presenter->redirectUrl("/$lang");
});

// Route für URL https://example.com/cs nebo https://example.com/en
$router->addRoute('<lang cs|en>', function ($presenter, string $lang) {
// Anzeige der entsprechenden Vorlage, zum Beispiel ../templates/de.latte
$template = $presenter->createTemplate()
->setFile(__DIR__ . '/../templates/' . $lang . '.latte');
return $template;
});

// Starten Sie die Anwendung!
$container->getByType(Nette\Application\Application::class)->run();
```

Alles andere sind Vorlagen, die im übergeordneten Ordner `/templates` gespeichert werden.

Der PHP-Code in `index.php` richtet zunächst [die Umgebung |bootstrap:] ein, definiert dann die [Routen |application:routing#dynamic-routing-with-callbacks] und führt schließlich die Anwendung aus. Der Vorteil ist, dass der zweite Parameter der Funktion `addRoute()` eine Callable sein kann, die ausgeführt wird, wenn die entsprechende Seite geöffnet wird.


Warum Nette für Microsites verwenden? .[#toc-why-use-nette-for-microsites]
--------------------------------------------------------------------------

- Entwickler, die [Tracy |tracy:] einmal ausprobiert haben, können sich heute nicht mehr vorstellen, ohne es zu programmieren.
- Aber vor allem werden Sie das Templating-System [Latte |latte:] nutzen, denn schon ab 2 Seiten werden Sie [Layout und Inhalt |latte:template-inheritance] trennen wollen.
- Und Sie wollen sich auf jeden Fall auf das [automatische Escaping |latte:safety-first] verlassen, um XSS-Schwachstellen zu vermeiden.
- Nette sorgt auch dafür, dass im Falle eines Fehlers niemals PHP-Fehlermeldungen angezeigt werden, sondern eine benutzerfreundliche Seite.
- Wenn Sie Feedback von den Nutzern erhalten möchten, zum Beispiel in Form eines Kontaktformulars, können Sie auch [Formulare |forms:] und eine [Datenbank |database:] hinzufügen.
- Sie können ausgefüllte Formulare auch einfach [per E-Mail versch |mail:]icken lassen.
- In manchen Fällen ist die [Zwischenspeicherung |caching:] nützlich, z. B. beim Herunterladen und Anzeigen von Feeds.

In der heutigen Zeit, in der Geschwindigkeit und Effizienz entscheidend sind, ist es wichtig, über Werkzeuge zu verfügen, die es Ihnen ermöglichen, Ergebnisse ohne unnötige Verzögerungen zu erzielen. Das Nette-Framework bietet genau das - schnelle Entwicklung, Sicherheit und eine breite Palette von Tools wie Tracy und Latte, die den Prozess vereinfachen. Installieren Sie einfach ein paar Nette-Pakete, und die Erstellung einer solchen Microsite wird zum Kinderspiel. Und Sie wissen, dass es keine versteckten Sicherheitslücken gibt.
1 change: 1 addition & 0 deletions best-practices/el/@home.texy
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
Κοινό
-----
- [Πώς να φορτώσετε το αρχείο ρυθμίσεων |bootstrap:]
- [Πώς να γράφετε microsites |microsites]
- [Γιατί η Nette χρησιμοποιεί τη σημειογραφία σταθερών PascalCase; |https://blog.nette.org/el/gia-ligoteres-krauges-ston-kodika]
- [Γιατί η Nette δεν χρησιμοποιεί την κατάληξη Interface; |https://blog.nette.org/el/ta-prothemata-kai-ta-epithemata-den-anekoun-sta-onomata-diasyndeses]
- [Συμβουλές χρήσης του Composer |composer]
Expand Down
Loading