Zend Framework Routing: estensione .html
-
19-08-2019 - |
Domanda
So di averlo già visto prima, ma non riesco a trovare le informazioni da nessuna parte. Devo essere in grado di instradare con estensioni .html in Zend Framework.
vale a dire. /controller/action.html dovrebbe essere indirizzato al controller / azione appropriato.
Abbiamo un'idea per eliminare l'estensione .html con il nostro file .htaccess ma penso che cambiare la configurazione del percorso sarebbe la soluzione migliore.
Qualsiasi consiglio è il benvenuto.
Soluzione
Una rapida ricerca su Google ha prodotto i seguenti tutorial:
Estensione del percorso e del router Zend Framework per il routing personalizzato
Routing e URL complessi in Zend Framework
Altri suggerimenti
Questo è il plugin che ho usato in diverse applicazioni:
/**
* Removes .html extension from URI, if present.
*/
class Application_Plugin_RemoveHtmlExtension extends Zend_Controller_Plugin_Abstract
{
public function routeStartup(Zend_Controller_Request_Abstract $request)
{
// remove ".html" from the end of the URI
$url = preg_replace('#\.html$#i', '', $request->getRequestUri());
$request->setRequestUri($url);
}
}
Stavo cercando di fare lo stesso per una vecchia applicazione. Ecco cosa ha funzionato per me.
$front = Zend_Controller_Front::getInstance();
$router = $front->getRouter();
$router->addRoute('routeHTML', new Zend_Controller_Router_Route_Regex( '([a-z-]+)/([a-z-]+)/([a-z-]+)\.html', array(),
array(1 => 'module', 2 => 'controller', '3' => 'action') ,
'%s/%s/%s.html')
);
Il percorso predefinito (senza moduli) è:
:controller/:action
Che puoi rimuovere tramite:
$router->removeDefaultRoutes();
Quindi aggiungi la tua versione:
:controller/:action.html