YII 2,方法不允许 (#405)

3
  • 当我在GridView中删除一条记录时,在我的托管服务器上出现了这个错误。
  • 本地没有问题。

我不明白的是:

错误信息显示 -> 方法不允许。此URL仅可处理以下请求方法:POST。

当我查看我的代码时:

public function behaviors()
    {
        return [
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'delete' => ['POST'],
                ],
            ],
        ];
    }

这是一个POST请求吗?!

当我将其更改为GET时,它可以正常工作,但没有删除确认提示...

我有两个问题:

  • 为什么我会收到消息“只允许发布”,而它是发布?
  • 如何在更改为GET时获得删除确认

对不起,我的英语不好,非常感谢您的帮助。

输入图像描述


你确定本地和远程主机是相同的吗?远程主机没有特殊的Web服务器配置吗?你能展示一下调用删除URL的代码吗? - robsch
请检查配置文件(本地和服务器)是否都有相同的值,如果不同,请告诉我。 - ScaisEdge
有任何 JavaScript 错误吗? - mmonem
请将您的查看页面在此发布。 - Irfan Ali
我遇到了相同的错误,但在我的本地主机上和测试服务器上都可以正常工作。但是当我上传到客户服务器时,我仍然面临着相同的问题。 - nitin
1个回答

0

你可能在控制器的behaviors方法中设置了一个VerbFilter,这会阻止使用GET方法调用delete操作。

类似于以下内容:

public function behaviors()
{
    return [
        'verbs' => [
            'class' => \yii\filters\VerbFilter::className(),
            'actions' => [
                'index'  => ['GET'],
                'view'   => ['GET'],
                'create' => ['GET', 'POST'],
                'update' => ['GET', 'PUT', 'POST'],
                'delete' => ['POST', 'DELETE'],
            ],
        ],
    ];
}

您可以在这里了解更多关于VerFilter的信息。

您有两个选项:

  1. behaviors方法中删除VerbFilter
  2. 您可以将data-method="post"属性添加到您的链接中,这将触发一个POST请求而不是GET

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接