我有一个论坛,网址为:http://example.com/fourm/
在网址中使用slug,例如:http://example.com/fourm/a-category-name
在类别页面上,有一个添加主题的表单, 哪个用户可以输入标题,这也将成为SEO的slu .. 让我们说标题slug是“some-topic-title”
所以主题网址为:http://example.com/fourm/a-category-name/some-topic-title
我的问题是,我应该在redirect()
函数中输入什么?
public function actionCreate(){
if(isset($_POST['Forum'])){
$model->attributes=$_POST['Forum'];
if($model->save()){
$this->redirect( ????? );
}
}
显示主题内容的控制器是“ForumPostController”,其中actionIndex是这样的:
public function actionIndex($cateSlug, $TopicSlug){
$model = new ForumPost;
$cate_id = ForumCate::model()->getCateIdBySlug():
$topic_id = Forum::model()->getTopicIdBySlug():
$model = $model->selectPost($cate_id, $topic_id);
$this->render('index',array(
'model'=>$model;
));
}
我知道我可以将URL重定向,但最好以“yii方式”进行制作。 上面的操作是用于处理用户输入链接,我应该采取另一个操作来接收重定向吗?或任何其他想法?
答案 0 :(得分:0)
$this->redirect($this->createUrl('index', array('cateSlug' => $model->cate_slug)));
此处参考:http://www.yiiframework.com/doc/api/1.1/CController#createUrl-detail
答案 1 :(得分:0)
您可以将数组作为参数添加到重定向功能。数组的第一个元素应该是控制器/动作,所有其他元素都是参数。参考此处:http://www.yiiframework.com/doc/api/1.1/CController#redirect-detail
所以这对你有用:
$this->redirect(array(
'forumPostController/index',
'cateSlug' => $model->cate_slug,
'topicSlug' => $model->topicSlug,
));
注意:确保在模型的beforeSave方法中生成slug,因此在$ model-> save()重定向用户之后,slug将可用,你可以正确地重定向。
您不需要其他操作来处理重定向,只需重定向您呈现论坛主题的位置(因此它现在很好)