Zend Framework Routing: расширение .html - PullRequest
9 голосов
/ 23 января 2009

Я знаю, что видел это, но не могу найти информацию нигде. Мне нужно иметь возможность маршрутизировать с расширениями .html в Zend Framework.

т.е. /controller/action.html должен направлять к соответствующему контроллеру / действию.

У нас есть идея выбросить расширение .html с нашим файлом .htaccess, но я думаю, что изменение конфигурации маршрута было бы лучшим решением.

Любой совет приветствуется.

Ответы [ 4 ]

3 голосов
/ 12 декабря 2011

Это плагин, который я использовал в нескольких приложениях:

/**
 * 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);
    }
}
2 голосов
/ 23 января 2009
1 голос
/ 17 мая 2016

Я пытался сделать то же самое для старого приложения. Вот что сработало для меня.

$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')
);
0 голосов
/ 23 января 2009

Маршрут по умолчанию (без модулей):

:controller/:action

которые вы можете удалить:

$router->removeDefaultRoutes();

Затем добавьте свою версию:

:controller/:action.html
...