Yii2 overriding fields() to rename fields in case of validation errors

Ref: http://www.yiiframework.com/doc-2.0/guide-rest-resources.html#overriding-fields

I am overriding fields() to rename fields in User model.

GET - response data fields are renamed as expected

POST - validation error field names are not renamed

  1. User table columns




    public function rules()

    {

        return [

            [['User_Name', 'Password', 'Auth_Token', 'User_Type_Id', 'User_Status_Id'], 'required'],

        ]

    }



  1. overriding fields()




    public function fields()

    {

        return [

            'user_id' => 'User_Id',

            'access_token' => 'Auth_Token',

            'user_name' => 'User_Name',

            'user_type' => 'userType.User_Type_Name',

            'name' => 'userProfile.Fname',

        ];

    }



  1. Get User data (fields renamed as expected)




    [

      {

        "user_id": "1",

        "access_token": "123",

        "user_name": "kiran",

        "user_type": "Customer",

        "name": "customer"

      }

    ]



  1. Validate model (error field names are not renamed)




    [

       {

         "field": "User_Name",

         "message": "User  Name cannot be blank."

       },

       {

         "field": "Password",

         "message": "Password cannot be blank."

       },

       {

         "field": "Auth_Token",

         "message": "Auth  Token cannot be blank."

       },

       {

         "field": "User_Type_Id",

         "message": "User  Type  ID cannot be blank."

       },

       {

         "field": "User_Status_Id",

         "message": "User  Status  ID cannot be blank."

       }

   ]



Issue fixed

  1. Using getter/setter methods to load the post data inside user model.

Ref: http://stackoverflow.com/questions/31663403/yii2-rest-create-with-fields

  1. Overwriting addError() method to change error field name



public function addError($attribute, $error = '') {

            $renamed_attr = $this->renamedFields($attribute);

            parent::addError($renamed_attr, $error);

        }