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.