Yii如何重定向到slug链接表单控制器?

时间:2014-08-08 10:17:56

标签: php yii

我有一个论坛,网址为: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方式”进行制作。 上面的操作是用于处理用户输入链接,我应该采取另一个操作来接收重定向吗?或任何其他想法?

2 个答案:

答案 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将可用,你可以正确地重定向。

您不需要其他操作来处理重定向,只需重定向您呈现论坛主题的位置(因此它现在很好)