Nette Documentation Preview

syntax
Come scrivere microsite
***********************

Immaginate di dover creare in fretta un piccolo sito per un evento aziendale in arrivo. Deve essere semplice, veloce e senza complicazioni inutili. Potreste pensare che per un progetto così piccolo un framework robusto non serva. Ma se usare il Nette Framework potesse in realtà semplificare e accelerare il lavoro?

Anche quando create siti semplici non volete rinunciare alla comodità. Non volete reinventare ciò che è già stato risolto. Siate pure pigri e lasciatevi coccolare. Il Nette Framework è eccellente anche come micro-framework.

Come può apparire un microsite del genere? Per esempio, tutto il codice del sito può stare in un unico file `index.php` nella directory pubblica:

```php
<?php

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

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

// creiamo il container DI in base alla configurazione in config.neon
$configurator->addConfig(__DIR__ . '/../app/config.neon');
$container = $configurator->createContainer();

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

// rotta per l'URL https://example.com/
$router->addRoute('', function ($presenter, Nette\Http\Request $httpRequest) {
	// rileviamo la lingua del browser e reindirizziamo all'URL /en oppure /de ecc.
	$supportedLangs = ['en', 'de', 'cs'];
	$lang = $httpRequest->detectLanguage($supportedLangs) ?: reset($supportedLangs);
	return $presenter->redirectUrl("/$lang");
});

// rotta per l'URL https://example.com/cs oppure https://example.com/en
$router->addRoute('<lang cs|en|de>', function ($presenter, string $lang) {
	// mostriamo il template corrispondente, per esempio ../templates/en.latte
	$template = $presenter->createTemplate()
		->setFile(__DIR__ . '/../templates/' . $lang . '.latte');
	return $template;
});

// avviamo l'applicazione!
$container->getByType(Nette\Application\Application::class)->run();
```

Tutto il resto saranno template salvati nella directory superiore `/templates`.

Il codice PHP in `index.php` prima [prepara l'ambiente |bootstrap:], poi definisce le [rotte |application:routing#Routing dinamico con le callback] e infine avvia l'applicazione. Il vantaggio è che il secondo parametro della funzione `addRoute()` può essere un callable, che viene eseguito quando si accede alla pagina corrispondente.


Perché usare Nette per i microsite?
-----------------------------------

- I programmatori che hanno provato [Tracy|tracy:] oggi non sanno più immaginare di programmare senza.
- Soprattutto sfrutterete il sistema di template [Latte|latte:], perché già con due pagine vorrete separare [layout e contenuto|latte:template-inheritance].
- E di sicuro volete contare sull'[escaping automatico |latte:safety-first] per evitare vulnerabilità XSS.
- Nette garantisce anche che, in caso di errore, non vengano mai mostrati i messaggi di errore grezzi di PHP, ma una pagina comprensibile per l'utente.
- Se volete raccogliere le reazioni degli utenti, per esempio con un form di contatto, potete aggiungere facilmente il supporto per i [form|forms:] e il [database|database:].
- Potete anche far [inviare per email|mail:] i form compilati, senza sforzo.
- A volte può tornare utile la [cache|caching:], per esempio quando scaricate e mostrate dei feed.

Nel mondo di oggi, dove velocità ed efficienza sono decisive, è essenziale avere strumenti che permettano di ottenere risultati senza ritardi inutili. Il Nette Framework offre esattamente questo: sviluppo rapido, sicurezza e un'ampia gamma di strumenti come Tracy e Latte che semplificano il lavoro. Basta installare qualche pacchetto Nette e costruire un microsite del genere diventa incredibilmente facile. E potete stare tranquilli che non ci sono vulnerabilità di sicurezza nascoste.

Come scrivere microsite

Immaginate di dover creare in fretta un piccolo sito per un evento aziendale in arrivo. Deve essere semplice, veloce e senza complicazioni inutili. Potreste pensare che per un progetto così piccolo un framework robusto non serva. Ma se usare il Nette Framework potesse in realtà semplificare e accelerare il lavoro?

Anche quando create siti semplici non volete rinunciare alla comodità. Non volete reinventare ciò che è già stato risolto. Siate pure pigri e lasciatevi coccolare. Il Nette Framework è eccellente anche come micro-framework.

Come può apparire un microsite del genere? Per esempio, tutto il codice del sito può stare in un unico file index.php nella directory pubblica:

<?php

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

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

// creiamo il container DI in base alla configurazione in config.neon
$configurator->addConfig(__DIR__ . '/../app/config.neon');
$container = $configurator->createContainer();

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

// rotta per l'URL https://example.com/
$router->addRoute('', function ($presenter, Nette\Http\Request $httpRequest) {
	// rileviamo la lingua del browser e reindirizziamo all'URL /en oppure /de ecc.
	$supportedLangs = ['en', 'de', 'cs'];
	$lang = $httpRequest->detectLanguage($supportedLangs) ?: reset($supportedLangs);
	return $presenter->redirectUrl("/$lang");
});

// rotta per l'URL https://example.com/cs oppure https://example.com/en
$router->addRoute('<lang cs|en|de>', function ($presenter, string $lang) {
	// mostriamo il template corrispondente, per esempio ../templates/en.latte
	$template = $presenter->createTemplate()
		->setFile(__DIR__ . '/../templates/' . $lang . '.latte');
	return $template;
});

// avviamo l'applicazione!
$container->getByType(Nette\Application\Application::class)->run();

Tutto il resto saranno template salvati nella directory superiore /templates.

Il codice PHP in index.php prima prepara l'ambiente, poi definisce le rotte e infine avvia l'applicazione. Il vantaggio è che il secondo parametro della funzione addRoute() può essere un callable, che viene eseguito quando si accede alla pagina corrispondente.

Perché usare Nette per i microsite?

  • I programmatori che hanno provato Tracy oggi non sanno più immaginare di programmare senza.
  • Soprattutto sfrutterete il sistema di template Latte, perché già con due pagine vorrete separare layout e contenuto.
  • E di sicuro volete contare sull'escaping automatico per evitare vulnerabilità XSS.
  • Nette garantisce anche che, in caso di errore, non vengano mai mostrati i messaggi di errore grezzi di PHP, ma una pagina comprensibile per l'utente.
  • Se volete raccogliere le reazioni degli utenti, per esempio con un form di contatto, potete aggiungere facilmente il supporto per i form e il database.
  • Potete anche far inviare per email i form compilati, senza sforzo.
  • A volte può tornare utile la cache, per esempio quando scaricate e mostrate dei feed.

Nel mondo di oggi, dove velocità ed efficienza sono decisive, è essenziale avere strumenti che permettano di ottenere risultati senza ritardi inutili. Il Nette Framework offre esattamente questo: sviluppo rapido, sicurezza e un'ampia gamma di strumenti come Tracy e Latte che semplificano il lavoro. Basta installare qualche pacchetto Nette e costruire un microsite del genere diventa incredibilmente facile. E potete stare tranquilli che non ci sono vulnerabilità di sicurezza nascoste.