所以这就是我面临的问题:我在Yii中创建了一个博客系统,并在Post视图页面中创建了一个评论创建表单。我还创建了一个删除链接,链接工作正常,当我点击删除链接时评论确实被删除,但是当评论被删除时,我被重定向到评论页面的管理网格视图。
这是评论控制器中的默认删除操作:
public function actionDelete($id)
{
$this->loadModel($id)->delete();
// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
if(!isset($_GET['ajax']))
$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
}
但是,我尝试过使用 returnUrl 但是,我仍然无法重定向回到我所在的同一个帖子视图页面。我不断被重定向到管理员评论管理的页面。
这是我在视图文件中的CHtml ::链接:
<?php echo CHtml::link('Delete','#',array('submit'=>array('comment/delete','id'=>$comment->id),'confirm'=>'Are you sure?')); ?>
这会删除所需的评论,但我希望删除后将其重定向到此页面。
如果需要更多代码,我将给予它。
P.S:如果它有帮助,这是CommentController的accessRules:
public function accessRules()
{
return array(
array('allow', // allow all users to perform 'index' and 'view' actions
'actions'=>array('index','view','create'),
'users'=>array('*'),
),
array('allow', // allow admin user to perform 'admin' and 'delete' actions
'actions'=>array('admin','delete','update'),
'users'=>array('@'),
),
array('deny', // deny all users
'users'=>array('*'),
),
);
}
如果我做错了,我很抱歉。我确实对Yii很新,并且尽我所能尽力学习。
此致
答案 0 :(得分:3)
echo CHtml::link('Delete','#',array('submit'=>array('comment/delete','id'=>$comment->id),'confirm'=>'Are you sure?')); ?
此行表示您创建一个HTML链接,单击此链接后,将以发布模式提交到“评论/删除”操作。
有关这些选项的文档可在Yii网站上找到: http://www.yiiframework.com/doc/api/1.1/CHtml#clientChange-detail
显然,这里没有'returnUrl'参数设置到$ _POST中,只设置'id'。这就是您总是被重定向到 admin 视图的原因。
我不知道您是如何使用 urlReturn 的,但是对于重定向,我想这个想法会是这样的:
public function actionDelete($id) {
$this->loadModel($id)->delete();
// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
if (!isset($_GET['ajax'])) {
$this->redirect(Yii::app()->getRequest()->urlReferrer);
}
}
答案 1 :(得分:0)
您可以使用HTTP引荐来源
public function actionDelete($id)
{
$this->loadModel($id)->delete();
// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
if(!isset($_GET['ajax']))
$this->redirect(isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : array('admin'));
}
或从您正在加载的模型中派生帖子的URL,然后在那里重定向。我不知道您的确切实现细节,但它有点像这样(假设您有一条路线blogPost/view
且comment
模型与博客的关系blogPost
发布评论适用于:
public function actionDelete($id)
{
$model = $this->loadModel($id);
$model->delete();
// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
if(!isset($_GET['ajax']))
$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('blog/view', 'id' => $model->blogPost->id));
}