2

我有这样的网址

example.com/model/id

example.com/image/123(默认规则)

我会将其重写为:

example.com/category/123-this_is_encoded_title.html

我的图像模型具有以下属性:

  • ID
  • 标题
  • 类别 ...

我需要将模型中的类别添加到 url。如何将类别名称动态添加到 url?

4

1 回答 1

0

似乎您已经使用了一些默认的 CUrlManager 规则。

在您的规则列表顶部添加以下规则。(我假设您的控制器 ID 是image

'<category:\w+>/<id:\d+>-<title:\w+>.html'=>'image/view',

除此之外,您必须在所有地方更改 url 创建。您必须将标题类别值作为 url 参数传递。

前任:

//Cleanup the title and category
$model->title = preg_replace("/[^\w+]/", '_', $model->title);
$model->category = preg_replace("/[^\w+]/", '_', $model->category);

//ex 1:
$this->redirect(array('view',
         'id'=>$model->id, 
         'title'=>$model->title, 
         'category' => $model->category
));

//ex 2:
echo CHtml::link('Title', array('view',
         'id'=>$data->id,
         'title' => $data->title, 
         'category' => $data->category
 ));

//ex 3:
$this->createUrl('image/view', array(
         'id'=>$image->id, 
         'title'=>$image->title, 
         'category' => $image->category
));

这个答案解释了你需要做什么。

请按照@dInGd0nG 建议进行代码重构。

于 2012-10-05T05:55:58.793 回答