Вопрос

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

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

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

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

Это было полезно?

Другие советы

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

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

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

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

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

:controller/:action

Который вы можете удалить с помощью:

$router->removeDefaultRoutes();

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

:controller/:action.html
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top