# Adding new field to user model Suppose, you need to add new field to `User` model which will be editable in admin panel. Unfortunately at the moment Yii2-user does not support adding new fields to the registration form. ## Create new migration Let's start with creating new migration, which will add new field to `user` table: run `php yii migrate/create add_new_field_to_user` and open generated migration: ```php class m123456_654321_add_new_field_to_user extends \yii\db\Migration { public function up() { $this->addColumn('{{%user}}', 'field', Schema::TYPE_STRING); } public function down() { $this->dropColumn('{{%user}}', 'field'); } } ``` And now you can apply that migration by running `php yii migrate`. ## Override User model Override `User` model as described in [guide](overriding-models.md) and add following lines to the overridden model: ```php class User extends \dektrium\user\models\User { public function scenarios() { $scenarios = parent::scenarios(); // add field to scenarios $scenarios['create'][] = 'field'; $scenarios['update'][] = 'field'; $scenarios['register'][] = 'field'; return $scenarios; } public function rules() { $rules = parent::rules(); // add some rules $rules['fieldRequired'] = ['field', 'required']; $rules['fieldLength'] = ['field', 'string', 'max' => 10]; return $rules; } } ``` ## Adding field to the admin form You should override view file `@dektrium/user/views/admin/_user.php` as described in [special guide](overriding-views.md) with the following content: ```php field($user, 'username')->textInput(['maxlength' => 25]) ?> field($user, 'email')->textInput(['maxlength' => 255]) ?> field($user, 'password')->passwordInput() ?> field($user, 'field')->textInput(['maxlength' => 10]) ?> ``` ## Adding field to the registration form In order to do such thing you should override registration form class and appropriate view file. Let's start with overriding registration form. Since all the fields of registration form are passed to the User model, we should only add a field and appropriate validation rules: ```php class RegistrationForm extends \dektrium\user\models\RegistrationForm { /** * @var string */ public $field; /** * @inheritdoc */ public function rules() { $rules = parent::rules(); $rules['fieldRequired'] = ['field', 'required']; $rules['fieldLength'] = ['field', 'string', 'max' => 10]; return $rules; } } ``` And the last thing you need to do is overriding registration form view file: ```php title = Yii::t('user', 'Sign up'); $this->params['breadcrumbs'][] = $this->title; ?>

title) ?>

'registration-form', ]); ?> field($model, 'email') ?> field($model, 'username') ?> field($model, 'field') ?> field($model, 'password')->passwordInput() ?> 'btn btn-success btn-block']) ?>

```