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.