Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法在Yii中正确重定向actionDelete():_Php_Yii_Authorization_Http Redirect - Fatal编程技术网

Php 无法在Yii中正确重定向actionDelete():

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 (

所以我面临的问题是:我在Yii中创建了一个博客系统,在Post view页面中创建了一个评论创建表单。我还创建了一个删除链接,链接工作正常,当我点击删除链接时,评论确实被删除了,但是当评论被删除时,我被重定向到评论页面的管理网格视图

这是注释控制器中的默认删除操作:

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方法肯定会在这里起作用。我从希律王和你那里得到了答案!多谢