Nette Documentation Preview

syntax
Как да пишем микросайтове
*************************

Представете си, че трябва бързо да създадете малък уебсайт за предстоящо събитие на вашата компания. Той трябва да бъде прост, бърз и без излишни усложнения. Може би си мислите, че такъв малък проект не изисква стабилна рамка. Но какво ще кажете, ако използването на рамката 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 и изграждането на такъв микросайт се превръща в лесна задача. И знаете, че няма скрити недостатъци в сигурността.

Как да пишем микросайтове

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

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

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

&lt;?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 първо настройва средата, след това дефинира маршрути и накрая стартира приложението. Предимството е, че вторият параметър на функцията addRoute() може да бъде извикващо се име, което се изпълнява при отваряне на съответната страница.

Защо да използвате Nette за микросайтове?

  • Разработчиците, които някога са опитвали Трейси, днес не могат да си представят кодирането без него.
  • Но преди всичко ще използвате системата за шаблониране Latte, защото само от 2 страници ще искате да разделите оформлението и съдържанието.
  • И със сигурност искате да разчитате на автоматичното ескапиране, за да предотвратите XSS уязвимости.
  • Nette също така гарантира, че в случай на грешка никога няма да бъдат показвани съобщения за грешка на PHP, а вместо това ще бъде показана удобна за потребителя страница.
  • Ако искате да получавате обратна връзка от потребителите, например под формата на форма за контакт, можете да добавите и форми и база данни.
  • Можете също така лесно да изпратите попълнените формуляри по имейл.
  • Понякога може да ви е полезно кеширането, например при изтегляне и показване на емисии.

В днешната епоха, в която скоростта и ефективността са от ключово значение, е важно да разполагате с инструменти, които ви позволяват да постигате резултати без излишни забавяния. Рамката Nette предлага точно това – бърза разработка, сигурност и широк набор от инструменти като Tracy и Latte, които опростяват процеса. Достатъчно е да инсталирате няколко пакета на Nette и изграждането на такъв микросайт се превръща в лесна задача. И знаете, че няма скрити недостатъци в сигурността.