我有这样的网址
example.com/model/id
example.com/image/123(默认规则)
我会将其重写为:
example.com/category/123-this_is_encoded_title.html
我的图像模型具有以下属性:
- ID
- 标题
- 类别 ...
我需要将模型中的类别添加到 url。如何将类别名称动态添加到 url?
我有这样的网址
example.com/model/id
example.com/image/123(默认规则)
我会将其重写为:
example.com/category/123-this_is_encoded_title.html
我的图像模型具有以下属性:
我需要将模型中的类别添加到 url。如何将类别名称动态添加到 url?
似乎您已经使用了一些默认的 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 建议进行代码重构。