Nette Documentation Preview

syntax
Як писати мікросайти
********************

Уявіть, що вам потрібно швидко створити невеликий сайт для майбутньої події вашої компанії. Він повинен бути простим, швидким і без зайвих складнощів. Ви можете подумати, що такий невеликий проект не потребує надійного фреймворку. Але що, якщо використання фреймворку Nette може значно спростити і прискорити цей процес?

Навіть при створенні простих веб-сайтів не хочеться відмовлятися від комфорту. Ви не хочете винаходити велосипед. Не соромтеся лінуватися і балувати себе. Nette Framework також можна чудово використовувати як мікрофреймворк.

Як може виглядати такий мікросайт? Наприклад, весь код сайту можна розмістити в одному файлі `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 nebo 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 |tracy:], не можуть уявити собі кодування без нього сьогодні.
- Але перш за все, ви будете використовувати систему шаблонів [Latte |latte:], тому що всього з 2 сторінок ви захочете відокремити [макет і контент |latte:template-inheritance].
- І ви точно захочете покластися на [автоматичне |latte:safety-first] екранування, щоб запобігти XSS-уразливостям.
- Nette також гарантує, що у випадку помилки, повідомлення про помилки PHP ніколи не будуть відображатися, а натомість буде показана зручна для користувача сторінка.
- Якщо ви хочете отримати зворотній зв'язок від користувачів, наприклад, у вигляді контактної форми, ви також можете додати [форми |forms:] і [базу даних |database:].
- Ви також можете легко надсилати заповнені форми [електронною |mail:] поштою.
- Іноді вам може стати в нагоді [кешування |caching:], наприклад, при завантаженні та відображенні новин.

У наш час, коли швидкість та ефективність є ключовими, важливо мати інструменти, які дозволяють досягати результатів без зайвих затримок. Фреймворк Nette пропонує саме це - швидку розробку, безпеку та широкий спектр інструментів, таких як Tracy та Latte, які спрощують процес. Просто встановіть кілька пакетів Nette, і створення такого мікросайту стане легкою справою. І ви знаєте, що немає ніяких прихованих вразливостей у безпеці.

Як писати мікросайти

Уявіть, що вам потрібно швидко створити невеликий сайт для майбутньої події вашої компанії. Він повинен бути простим, швидким і без зайвих складнощів. Ви можете подумати, що такий невеликий проект не потребує надійного фреймворку. Але що, якщо використання фреймворку Nette може значно спростити і прискорити цей процес?

Навіть при створенні простих веб-сайтів не хочеться відмовлятися від комфорту. Ви не хочете винаходити велосипед. Не соромтеся лінуватися і балувати себе. Nette Framework також можна чудово використовувати як мікрофреймворк.

Як може виглядати такий мікросайт? Наприклад, весь код сайту можна розмістити в одному файлі 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 nebo 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 для мікросайтів?

  • Розробники, які хоч раз спробували Tracy, не можуть уявити собі кодування без нього сьогодні.
  • Але перш за все, ви будете використовувати систему шаблонів Latte, тому що всього з 2 сторінок ви захочете відокремити макет і контент.
  • І ви точно захочете покластися на автоматичне екранування, щоб запобігти XSS-уразливостям.
  • Nette також гарантує, що у випадку помилки, повідомлення про помилки PHP ніколи не будуть відображатися, а натомість буде показана зручна для користувача сторінка.
  • Якщо ви хочете отримати зворотній зв'язок від користувачів, наприклад, у вигляді контактної форми, ви також можете додати форми і базу даних.
  • Ви також можете легко надсилати заповнені форми електронною поштою.
  • Іноді вам може стати в нагоді кешування, наприклад, при завантаженні та відображенні новин.

У наш час, коли швидкість та ефективність є ключовими, важливо мати інструменти, які дозволяють досягати результатів без зайвих затримок. Фреймворк Nette пропонує саме це – швидку розробку, безпеку та широкий спектр інструментів, таких як Tracy та Latte, які спрощують процес. Просто встановіть кілька пакетів Nette, і створення такого мікросайту стане легкою справою. І ви знаєте, що немає ніяких прихованих вразливостей у безпеці.