【问题标题】:Make friendly url in zend framework在zend框架中制作友好的url
【发布时间】:2011-10-28 22:15:05
【问题描述】:

我在 zend-framework 1.9.7 上建立了一个站点。我想为每个具有类似于此 URL 的页面创建友好的 URL:http://mysite/search/detail/id/124

我希望友好 URL 看起来像:http://mysite/search/detail/ram

其中“ram”是 id=124 的用户名

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

【问题讨论】:

    标签: php zend-framework


    【解决方案1】:

    我建议你看一下Zend Controller Quickstart,它介绍了设置标准路由的步骤(它已经为漂亮的 URL 提供了一切)。

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

    具体来说,我会通过Router Route处理你的情况,例如:

    <?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 部分是一个参数,用你想要的 URL 的值ram 填充,以后可以用$request-&gt;getParam('name'); 检索。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        有一个可以很好地解决这个问题的 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
        

        这个插件超级好用。

        拥抱!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-09-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-07-25
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多