Nette Documentation Preview

syntax
Jak pisać mikrostrony internetowe
*********************************

Wyobraź sobie, że musisz szybko stworzyć małą stronę internetową na nadchodzące wydarzenie Twojej firmy. Powinna być prosta, szybka i bez zbędnych komplikacji. Można by pomyśleć, że tak mały projekt nie wymaga solidnego frameworka. Ale co, jeśli użycie frameworka Nette może znacznie uprościć i przyspieszyć ten proces?

Nawet tworząc proste strony internetowe, nie chcesz rezygnować z wygody. Nie chcesz wymyślać koła na nowo. Możesz być leniwy i rozpieszczać samego siebie. Nette Framework może być również doskonale wykorzystywany jako mikro framework.

Jak może wyglądać taka mikrostrona? Na przykład, cały kod strony może być umieszczony w pojedynczym pliku `index.php` w folderze publicznym:

```php
<?php

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

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

// utworzenie kontenera DI na podstawie konfiguracji w config.neon
$configurator->addConfig(__DIR__ . '/../app/config.neon');
$container = $configurator->createContainer();

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

// trasa dla adresu URL https://example.com/
$router->addRoute('', function ($presenter, Nette\Http\Request $httpRequest) {
	// wykrywanie języka przeglądarki i przekierowanie na URL /en lub /de itp.
	$supportedLangs = ['en', 'de', 'cs'];
	$lang = $httpRequest->detectLanguage($supportedLangs) ?: reset($supportedLangs);
	$presenter->redirectUrl("/$lang");
});

// trasa dla adresu URL https://example.com/cs nebo https://example.com/en
$router->addRoute('<lang cs|en>', function ($presenter, string $lang) {
	// wyświetla odpowiedni szablon, na przykład ../templates/en.latte
	$template = $presenter->createTemplate()
		->setFile(__DIR__ . '/../templates/' . $lang . '.latte');
	return $template;
});

// uruchom aplikację!
$container->getByType(Nette\Application\Application::class)->run();
```

Cała reszta będzie szablonami przechowywanymi w folderze nadrzędnym `/templates`.

Kod PHP w `index.php` najpierw konfiguruje [środowisko |bootstrap:], następnie definiuje [trasy |application:routing#dynamic-routing-with-callbacks], a na końcu uruchamia aplikację. Zaletą jest to, że drugim parametrem funkcji `addRoute()` może być wywołanie, które jest wykonywane po otwarciu odpowiedniej strony.


Dlaczego warto używać Nette dla mikrostron? .[#toc-why-use-nette-for-microsites]
--------------------------------------------------------------------------------

- Programiści, którzy kiedykolwiek wypróbowali [Tracy |tracy:], nie wyobrażają sobie dziś kodowania bez niego.
- Ale przede wszystkim będziesz korzystać z systemu szablonów [Latte |latte:], ponieważ z zaledwie 2 stron będziesz chciał oddzielić [układ i zawartość |latte:template-inheritance].
- I zdecydowanie chcesz polegać na [automatycznym uciekaniu |latte:safety-first], aby zapobiec lukom w zabezpieczeniach XSS.
- Nette zapewnia również, że w przypadku błędu komunikaty o błędach PHP nigdy nie będą wyświetlane, ale zamiast tego pojawi się przyjazna dla użytkownika strona.
- Jeśli chcesz uzyskać informacje zwrotne od użytkowników, na przykład w formie formularza kontaktowego, możesz również dodać [formularze |forms:] i [bazę danych |database:].
- Możesz także łatwo wysyłać wypełnione formularze [pocztą e-mail |mail:].
- Czasami przydatne może okazać się [buforowanie |caching:], na przykład podczas pobierania i wyświetlania kanałów.

W dzisiejszych czasach, gdzie szybkość i wydajność są kluczowe, ważne jest, aby mieć narzędzia, które pozwalają osiągnąć wyniki bez zbędnych opóźnień. Framework Nette oferuje właśnie to - szybki rozwój, bezpieczeństwo i szeroką gamę narzędzi, takich jak Tracy i Latte, które upraszczają proces. Wystarczy zainstalować kilka pakietów Nette, a zbudowanie takiej mikrostrony staje się dziecinnie proste. I wiesz, że nie ma żadnych ukrytych luk w zabezpieczeniach.

Jak pisać mikrostrony internetowe

Wyobraź sobie, że musisz szybko stworzyć małą stronę internetową na nadchodzące wydarzenie Twojej firmy. Powinna być prosta, szybka i bez zbędnych komplikacji. Można by pomyśleć, że tak mały projekt nie wymaga solidnego frameworka. Ale co, jeśli użycie frameworka Nette może znacznie uprościć i przyspieszyć ten proces?

Nawet tworząc proste strony internetowe, nie chcesz rezygnować z wygody. Nie chcesz wymyślać koła na nowo. Możesz być leniwy i rozpieszczać samego siebie. Nette Framework może być również doskonale wykorzystywany jako mikro framework.

Jak może wyglądać taka mikrostrona? Na przykład, cały kod strony może być umieszczony w pojedynczym pliku index.php w folderze publicznym:

&lt;?php

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

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

// utworzenie kontenera DI na podstawie konfiguracji w config.neon
$configurator->addConfig(__DIR__ . '/../app/config.neon');
$container = $configurator->createContainer();

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

// trasa dla adresu URL https://example.com/
$router->addRoute('', function ($presenter, Nette\Http\Request $httpRequest) {
	// wykrywanie języka przeglądarki i przekierowanie na URL /en lub /de itp.
	$supportedLangs = ['en', 'de', 'cs'];
	$lang = $httpRequest->detectLanguage($supportedLangs) ?: reset($supportedLangs);
	$presenter->redirectUrl("/$lang");
});

// trasa dla adresu URL https://example.com/cs nebo https://example.com/en
$router->addRoute('<lang cs|en>', function ($presenter, string $lang) {
	// wyświetla odpowiedni szablon, na przykład ../templates/en.latte
	$template = $presenter->createTemplate()
		->setFile(__DIR__ . '/../templates/' . $lang . '.latte');
	return $template;
});

// uruchom aplikację!
$container->getByType(Nette\Application\Application::class)->run();

Cała reszta będzie szablonami przechowywanymi w folderze nadrzędnym /templates.

Kod PHP w index.php najpierw konfiguruje środowisko, następnie definiuje trasy, a na końcu uruchamia aplikację. Zaletą jest to, że drugim parametrem funkcji addRoute() może być wywołanie, które jest wykonywane po otwarciu odpowiedniej strony.

Dlaczego warto używać Nette dla mikrostron?

  • Programiści, którzy kiedykolwiek wypróbowali Tracy, nie wyobrażają sobie dziś kodowania bez niego.
  • Ale przede wszystkim będziesz korzystać z systemu szablonów Latte, ponieważ z zaledwie 2 stron będziesz chciał oddzielić układ i zawartość.
  • I zdecydowanie chcesz polegać na automatycznym uciekaniu, aby zapobiec lukom w zabezpieczeniach XSS.
  • Nette zapewnia również, że w przypadku błędu komunikaty o błędach PHP nigdy nie będą wyświetlane, ale zamiast tego pojawi się przyjazna dla użytkownika strona.
  • Jeśli chcesz uzyskać informacje zwrotne od użytkowników, na przykład w formie formularza kontaktowego, możesz również dodać formularzebazę danych.
  • Możesz także łatwo wysyłać wypełnione formularze pocztą e-mail.
  • Czasami przydatne może okazać się buforowanie, na przykład podczas pobierania i wyświetlania kanałów.

W dzisiejszych czasach, gdzie szybkość i wydajność są kluczowe, ważne jest, aby mieć narzędzia, które pozwalają osiągnąć wyniki bez zbędnych opóźnień. Framework Nette oferuje właśnie to – szybki rozwój, bezpieczeństwo i szeroką gamę narzędzi, takich jak Tracy i Latte, które upraszczają proces. Wystarczy zainstalować kilka pakietów Nette, a zbudowanie takiej mikrostrony staje się dziecinnie proste. I wiesz, że nie ma żadnych ukrytych luk w zabezpieczeniach.