在zend框架中创建友好的URL

时间:2011-07-01 10:32:14

标签: php zend-framework

我在zend-framework 1.9.7上构建了一个站点。我想为每个网页制作友好的网址,其网址类似于:http://mysite/search/detail/id/124

我希望友好的网址如下:http://mysite/search/detail/ram

其中“ram”是id = 124

的用户名

我在.htaccess文件中包含RewriteRule ^name/(.*)/$ guid/$1,但它不起作用。

3 个答案:

答案 0 :(得分:6)

我建议您查看Zend Controller Quickstart,其中介绍了设置标准路由的步骤(已经为好网址提供了所有内容)。

如果您想了解有关路由的更详细信息,我建议您查看Zend_Controller_Router's Manual

具体来说,我会通过路由器路由来处理你的情况,例如:

<?php

$router = Zend_Controller_Front::getInstance()->getRouter();

$detailsRoute = new Zend_Controller_Router_Route("search/detail/:name", array(
   'controller' => 'search',
   'action' => 'detail'
));

$router->addRoute('searchDetail', $detailsRoute);

部分:name是一个填充了所需网址的值ram的参数,稍后可以使用$request->getParam('name');进行检索。

答案 1 :(得分:0)

ZF中的控制器具有从自定义路由调用的功能。您可以找到文档here。它们为您提供了多种选择,可以选择您想要使用的路线。它可以是漂亮的URL,如博客甚至REST端点中的URL。

你不必乱用htaccess文件,因为所有对非静态资源的调用都是通过index.php进行的。

答案 2 :(得分:0)

有一个适用于此的zend插件。

<?php
/** dependencies **/
require 'Zend/Loader/Autoloader.php';
require 'Zag/Filter/CharConvert.php';

Zend_Loader_Autoloader::getInstance()->setFallbackAutoloader(true);

//filter
$filter = new Zag_Filter_CharConvert(array(
    'replaceWhiteSpace' => '-',
    'locale' => 'en_US',
    'charset'=> 'UTF-8'
));

echo $filter->filter('ééé ááá 90');//eee-aaa-90
echo $filter->filter('óóó 10aáééé');//ooo-10aaeee

该插件非常易于使用。

拥抱!