php - yii2 POST参数映射

标签 php mapping yii2

我有一些发送模拟数据的 js 脚本:

    $.ajax({
        type: "POST",
        url: '/manage/add-shops/',
        data: {'id':id, 'shops': shops}

'shops' 是包含约 1000 个元素的数组,因此我应该通过 POST 发送它。 我有一个带有方法的 yii2 Controller :

class ManageController extends Controller {
    public function actionAddShops($id, $shops=array()) {
       ....
    }

路由正常,但出现此错误:

"Missing required parameters: id"

看起来 POST 参数没有映射到方法参数。 谢谢。

最佳答案

你是对的,出于某种原因,Yii2 只自动绑定(bind) GET 变量,但不幸的是不是 POST。

但是,您可以轻松地进行魔术绑定(bind);您所要做的就是重写 Controller 的 runAction()。如果您不想为每个 Controller 手动执行此操作,只需创建一个基本 Controller 并在需要时从中扩展。检查以下代码段:

public function runAction($id, $params = [])
{
    // Extract the params from the request and bind them to params
    $params = \yii\helpers\BaseArrayHelper::merge(Yii::$app->getRequest()->getBodyParams(), $params);
    return parent::runAction($id, $params);
}

然后您将能够像在 Yii1 中一样正常访问您的 Controller 操作 $id$shops

希望这对您有所帮助。

关于php - yii2 POST参数映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28209465/

相关文章:

php - 如何要求 wordpress 登录以查看 wordpress 站点中的子目录?

c# - 从架构上讲,我应该如何用更易于管理的东西替换一个非常大的 switch 语句?

php - yii2 多重过滤器进入搜索模型

php - 如何禁用或删除 Yii2 编辑器图像和文件按钮?

php - 如何对网站 URL 中的内容 ID 号进行 Imgur 式混淆? (PHP&MySQL)

php - 无法逆转 Laravel 中 Eloquent 关系

PHP 新闻每页 5/分页 下一页 - 上一页

java - 我如何将 JsonObject 映射到 java 中的另一个 JsonObject 以便在 API 之间进行通信

java - 大表映射到另一个表

php - 在 Yii2 中创建带有链接的按钮