Yii覆盖createUrl但保留参数

时间:2013-01-01 14:44:12

标签: php url-rewriting yii extend

我正在扩展并覆盖createUrl方法以制作漂亮的URL。

这是一个片段:

public function createUrl($manager, $route, $params, $ampersand) {
        if($route == 'widget/view'){
            $widget = Widget::model()->findByPk($params['id']);
            return 'widget/' . $params['id'] . '/' . SEOUrlRule::slug($widget->title);
        }
}

这里有很多事情并不重要。我删除了不相关的部分。

工作正常。但是,有时可以使用其他参数调用方法,例如锚标记或放在URL末尾的GET参数。

使用我的方法,这些参数将丢失。要在新URL中向前传递它们,我是否必须重新执行原始createUrl方法手动执行的操作?或者是否有一个很好的面向对象的方式将工作传递给一个称职的方法?

1 个答案:

答案 0 :(得分:0)

你已经提出了所有要求 - 这是故意的吗?

您可以让Yii使用来自CApplication的createUrl构造参数字符串,例如:

public function createUrl($manager, $route, $params, $ampersand) { 
        if($route == 'widget/view'){
            $widget = Widget::model()->findByPk($params['id']);
            $url = 'widget/' . $params['id'] . '/' . SEOUrlRule::slug($widget->title);
            return Yii::app()->createUrl(trim($url,'/'),$params,$ampersand);
        }
}