Pergunta

Eu sei que eu vi este feito antes, mas não consigo encontrar a qualquer lugar da informação. Eu preciso ser capaz de rota com extensões .html no Zend Framework.

I.E. /controller/action.html deve ser encaminhado para o controlador / ação apropriada.

Nós temos uma idéia de jogar fora a extensão .html com nosso arquivo .htaccess mas acho que mudar a configuração de rota seria a melhor solução.

Qualquer conselho é bem-vindo.

Foi útil?

Outras dicas

Este é o plugin que eu usei em várias aplicações:

/**
 * 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);
    }
}

Eu estava tentando fazer o mesmo para um aplicativo antigo. Aqui está o que funcionou para mim.

$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')
);

A rota padrão (sem módulos) é:

:controller/:action

O que você pode remover por:

$router->removeDefaultRoutes();

Em seguida, adicione a sua versão:

:controller/:action.html
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top