Rest API Model Create problem

I have unset the index and create class in Rest API, and am trying to insert values in Model before saving. But my model is not getting initiating and is probably a null. My code is here:


<?php


namespace api\controllers;


use yii\rest\ActiveController;

use common\models\Lift;


class LiftsController extends ActiveController

{

  public $modelClass = 'common\models\Lift';


  public function actions()

    {

        $actions = parent::actions();

        unset($actions['index'], $actions['create']);

        return $actions;

    }


  public function actionIndex($id)

    {

        return \common\models\Lift::find()->where(['freq_id' => $id])->one();    

    }


  public function actionCreate()

    {

        $model = new \common\models\Lift();

        $response = array();

        $response["success"] = false;  

        $response["message"] = "Before if";

        

        if ($model->load(\Yii::$app->request->post()) ) {

          $response["success"] = true; 

        }


        return ($response); 

    }

}



The response is here:


{

  "status": {

    "response_code": 0,

    "response_message": "OK",

    "response_extra": null

  },

  "data": {

    "success": false,

    "message": "Before if"

  }}

The index action is working as desired, but the create action is not allowing me initiate the model object.

Strange! if I capture the post in a different variable it works!


<?php


namespace api\controllers;


use yii\rest\ActiveController;

use common\models\Lift;


class LiftsController extends ActiveController

{

  public $modelClass = 'common\models\Lift';


  public function actions()

    {

        $actions = parent::actions();

        unset($actions['index'], $actions['create']);

        return $actions;

    }


  public function actionIndex($id)

    {

        return \common\models\Lift::find()->where(['freq_id' => $id])->one();    

    }


  public function actionCreate()

    {

        $model = new \common\models\Lift();

        $response = array();

        $response["success"] = false;  

        $response["message"] = "Failed to save Record"; 

        


        $params = \Yii::$app->request->post();


        foreach ($params as $key => $value) {

         $model[$key] = $value;

        }

        

        $date = date('Y-m-d H:i:s');

        $model["created_at"] = $date;


        if ($model->save()) {

          $response["success"] = true;

          $response["message"] = "Saved Record"; 

        }


        return ($response); 

    }

}



Response Message


{

  "status": {

    "response_code": 0,

    "response_message": "OK",

    "response_extra": null

  },

  "data": {

    "success": true,

    "message": "Saved Record"

  }

}

Try This




public function actionCreate()

{

	$model = new \common\models\Lift();

	$response = array();

	$response["success"] = false;  

	$response["message"] = "Failed to save Record"; 

	

	if ($model->load(\Yii::$app->getRequest()->getBodyParams(), '')) {

		$date = date('Y-m-d H:i:s');

		$model->created_at = $date;

		if($model->save()){

			$response["success"] = true;

			$response["message"] = "Saved Record"; 

		}

	}


	return ($response); 

}

Yes Joji, it worked. But still the question is

Why -> [size=2]$model[/size][color=#666600][size=2]->[/size][/color][size=2]load[/size][color=#666600][size=2](\[/size][/color][color=#660066][size=2]Yii[/size][/color][color=#666600][size=2]::[/size][/color][size=2]$app[/size][color=#666600][size=2]->[/size][/color][size=2]getRequest[/size][color=#666600]size=2->[/size][/color][size=2]getBodyParams[/size][color=#666600]size=2,[/size][/color][size=2] [/size][color=#008800][size=2]’’[/size][/color][color=#666600][size=2])[/size][/color]

Why not -> [size=2]$model[/size][color=#666600][size=2]->[/size][/color][size=2]load[/size][color=#666600]size=2[/size][/color]

Could you please elaborate?

It will work if you are posting values like this[color="#660066"][size=“2”] Lift[’[/size][/color][size=“2”]created_at’][/size]

[size="2"]Please check var_dump([/size][color="#666600"][size="2"]\[/size][/color][color="#660066"][size="2"]Yii[/size][/color][color="#666600"][size="2"]::[/size][/color][color="#1C2837"][size="2"]$app[/size][/color][color="#666600"][size="2"]->[/size][/color][color="#1C2837"][size="2"]request[/size][/color][color="#666600"][size="2"]->[/size][/color][color="#1C2837"][size="2"]post[/size][/color][color="#666600"]size="2"[/size][/color][size="2"]);[/size]

As originally said, this line is working:

[color=#000000]$params [/color][color=#666600]=[/color][color=#000000] [/color][color=#666600]\[/color][color=#660066]Yii[/color][color=#666600]::[/color][color=#000000]$app[/color][color=#666600]->[/color][color=#000000]request[/color][color=#666600]->[/color][color=#000000]post[/color]color=#666600;[/color]

But not this line:

[color=#000000]$model[/color][color=#666600]->[/color][color=#000000]load[/color]color=#666600[/color]

Both are getting data from

[color=#666600]\[/color][color=#660066]Yii[/color][color=#666600]::[/color][color=#000000]$app[/color][color=#666600]->[/color][color=#000000]request[/color][color=#666600]->[/color][color=#000000]post[/color]color=#666600[/color]

Only difference is the load method. But ‘load’ is working in your supplied code!!