【问题标题】:Yii CListView's friendly url using history.jsYii CListView 的友好 url 使用 history.js
【发布时间】:2014-06-05 15:43:02
【问题描述】:

我正在尝试使用启用 history.js 的 ClistView 制作友好的网址。

现在我的网址是这样的

localhost/ModuleName/controllerName/PageName/index/?PageName_sort=price.desc&PageName_page=3

我正在努力使它看起来更好(?PageName_sort=price.desc&PageName_page=3)类似这样或类似的东西

localhost/moduleName/controllerName/PageName/sort/price/desc/page/3

我也想删除 /index/

我的动作控制器是这样的

    /**
     * Lists all models.
     */
    public function actionIndex()
    {
        $dataProvider=new CActiveDataProvider('PageName',array(
            'pagination'=>array(
                'pageVar'=>'page'
            )
        ));
        $this->render('index',array(
            'dataProvider'=>$dataProvider,
        ));
    }

我的 UrlManager 看起来像这样

'PageName/page/<page:\d+>'=>'PageName/', 

知道谁能做到这一点吗?或者我错过了什么?谢谢

【问题讨论】:

    标签: yii


    【解决方案1】:

    我不确定能否访问您指定的网址。但是,您至少可以在 Yii 1.1 中获得以下格式的 url,而无需向 urlManager 添加额外规则。

    localhost/moduleName/controllerName/index/PageName_sort/price.desc/PageName_page/3
    

    这是因为CController::createUrl()用于在CPagination::createPageUrl()中创建分页链接

    【讨论】:

    • 对不起,这有点菜鸟,所以我必须在自定义类中重写这个函数,以及如何在 CViewlist 中调用它? public function createPageUrl($controller,$page) { $params=$this-&gt;params===null ? $_GET : $this-&gt;params; if($page&gt;0) // page 0 is the default $params[$this-&gt;pageVar]=$page+1; else unset($params[$this-&gt;pageVar]); return $controller-&gt;createUrl($this-&gt;route,$params); }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 2012-07-22
    • 2012-12-02
    相关资源
    最近更新 更多