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.

È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top