Php 无法在Yii中正确重定向actionDelete():
所以我面临的问题是:我在Yii中创建了一个博客系统,在Post view页面中创建了一个评论创建表单。我还创建了一个删除链接,链接工作正常,当我点击删除链接时,评论确实被删除了,但是当评论被删除时,我被重定向到评论页面的管理网格视图 这是注释控制器中的默认删除操作:Php 无法在Yii中正确重定向actionDelete():,php,yii,authorization,http-redirect,Php,Yii,Authorization,Http Redirect,所以我面临的问题是:我在Yii中创建了一个博客系统,在Post view页面中创建了一个评论创建表单。我还创建了一个删除链接,链接工作正常,当我点击删除链接时,评论确实被删除了,但是当评论被删除时,我被重定向到评论页面的管理网格视图 这是注释控制器中的默认删除操作: public function actionDelete($id) { $this->loadModel($id)->delete(); // if AJAX request (
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,但是,我仍然无法重定向回我所在的同一个post-view页面。我经常被重定向到评论管理的管理页面
这是视图文件中的CHtml::链接:
<?php echo CHtml::link('Delete','#',array('submit'=>array('comment/delete','id'=>$comment->id),'confirm'=>'Are you sure?')); ?>
如果我做错了什么,我很抱歉。我对Yii来说确实是个新手,我会尽我最大的努力去学习它
关于,您只需使用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有一个关系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));
}
您可以只使用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));
}
这一行表示您创建了一个HTML链接,单击该链接后,将以post模式提交到“评论/删除”操作
有关这些选项的文档可在Yii网站上获得:
显然,这里的$\u POST中没有设置“returnUrl”参数,只设置了“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);
}
}
这一行表示您创建了一个HTML链接,单击该链接后,将以post模式提交到“评论/删除”操作
有关这些选项的文档可在Yii网站上获得:
显然,这里的$\u POST中没有设置“returnUrl”参数,只设置了“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);
}
}
非常感谢..是的,这个成功了!!:)我完全忘记了URLreferer!!非常感谢..是的,这个成功了!!:)我完全忘记了URLreferer!!非常感谢。我得到了它。。URLreferer方法肯定会在这里起作用。我从希律王和你那里得到了答案!非常感谢……谢谢。。!我得到了它。。URLreferer方法肯定会在这里起作用。我从希律王和你那里得到了答案!多谢