Seleziona una pagina

zend-frameworkA Febbraio del 2013 Andrea Giannantonio, membro del PUG Roma ha postato sulla nostra newsletter esponendo un problema che ha avuto con una applicazione scritta con Zend Framework 1.12 riguardo l’url helper e routing. Credo che la tematica possa essere di interesse generale e ho pensato di riportare qui la soluzione. Questa problematica esposta da Andrea:

Nella mia app Zend_Framework 1.12 ho diversi diversi moduli, ho un metodo che invia una mail, all’interno del testo uso il view helper url per costruire un link. Se faccio eseguire questo metodo tramite apposita action via browser funziona tutto correttamente, mentre se eseguo questo metodo tramite un cron via shell ricevo questo errore:

Fatal error: Uncaught exception ‘Zend_Controller_Router_Exception’ with message ‘Route default is not defined’ in /path/ZendFramework-1.12.1/library/Zend/Controller/Router/Rewrite.php on line 318
Zend_Controller_Router_Exception: Route default is not defined in /path/ZendFramework-1.12.1/library/Zend/Controller/Router/Rewrite.php on line 318

Il problema in questo caso deriva che lanciando l’action da shell non sono valorizzate alcune variabili d’ambiente, disponibili invece per chiamate effettuate da browser, come ad esempio $_SERVER[‘HTTP_HOST’]. Una delle soluzioni proposta dei membri della mailing list è stata proprio quelle di ridefinire forzatamente la proprio la variabile $_SERVER[‘HTTP_HOST’] in modo che il tutto funzioni correttamente (simulando in questo caso quel che accade da browser).

Personalmente preferisco un’altra soluzione che è quella di settare la baseUrl sul router in fase di bootstrap dell’applicazione. In questo modo si ottene il risultato di istruire il router su quale sia la sua baseUrl senza mettere mano a variabili globali.

Andrea ha adottato questa soluzione risolvendo il proprio problema.