1

我正在扩展和覆盖 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);
        }
}

很多事情在这里都无关紧要。我删除了不相关的部分。

它工作正常。但是,有时可能会使用附加参数(例如锚标记或 GET 参数)调用该方法以放在 URL 的末尾。

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

4

1 回答 1

0

你已经提出了所有必要的论点——这是故意的吗?

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

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);
        }
}
于 2013-01-01T20:00:42.113 回答