@Baxa94
Baxa

Как изменить Форму регистрации в yii2?

Привет, всем!
Я хочу добавить дополнительный поле в форму регистрацию.
не могу получить значение из новый поле.
Вот форма
5b7169c081dd2851752742.png
Вот код (view):
spoiler
<h5 class="title">Edit Profile</h5>
                </div>
                <div class="card-body">
                    <?php $form = ActiveForm::begin(['id' => 'form-signup']); ?>
                        <div class="row">
                            <div class="col-md-4 pl-1">
                                <div class="form-group">
                                    <label>Login</label>
                                    <?= $form->field($model, 'username')->textInput(['class'=>'form-control', 'placeholder'=>'Login', 'autofocus' => true])->label(false) ?>
                                </div>
                            </div>
                            <div class="col-md-4 pl-1">
                                <div class="form-group">
                                    <label>Parol)</label>
                                    <?= $form->field($model, 'password')->passwordInput(['class'=>'form-control', 'placeholder'=>'parol', 'autofocus' => true])->label(false) ?>
                                </div>
                            </div>
                            <div class="col-md-4 pl-1">
                                <div class="form-group">
                                    <label for="exampleInputEmail1">Email</label>
                                    <?= $form->field($model, 'email')->textInput(['class'=>'form-control', 'placeholder'=>'E-mail', 'autofocus' => true])->label(false) ?>
                                </div>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-md-6 pr-1">
                                <div class="form-group">
                                    <label>Familiyangiz</label>
                                    <?= $form->field($model, 'first_name')->textInput(['class'=>'form-control', 'placeholder'=>'parol', 'autofocus' => true])->label(false) ?>
                                </div>
                            </div>
                            <div class="col-md-6 pl-1">
                                <div class="form-group">
                                    <label>Ismingiz</label>
                                    <?= $form->field($model, 'second_name')->textInput(['class'=>'form-control', 'placeholder'=>'parol', 'autofocus' => true])->label(false) ?>
                                </div>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-md-12">
                                <div class="form-group">
                                    <label>Shahar</label>
                                    <input type="text" class="form-control" placeholder="Home Address" value="Bld Mihail Kogalniceanu, nr. 8 Bl 1, Sc 1, Ap 09">
                                </div>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-md-4 pr-1">
                                <div class="form-group">
                                    <label>Manzil</label>
                                    <input type="text" class="form-control" placeholder="City" value="Mike">
                                </div>
                            </div>
                            <div class="col-md-4 px-1">
                                <div class="form-group">
                                    <label>Tug'ilgan sana</label>
                                    <input type="text" class="form-control" placeholder="Country" value="Andrew">
                                </div>
                            </div>
                            <div class="col-md-4 pl-1">
                                <div class="form-group">
                                    <label>Tel raqam</label>
                                    <input type="number" class="form-control" placeholder="ZIP Code">
                                </div>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-md-12">
                                <div class="form-group">
                                    <?= Html::submitButton('Signup', ['class' => 'btn btn-primary', 'name' => 'signup-button']) ?>
                                </div>
                            </div>
                        </div>

                </div>
            </div>
        </div>
        <div class="col-md-4">
            <div class="card card-user">
                <div class="image">
                    <img src="../assets/img/bg5.jpg" alt="...">
                </div>
                <div class="card-body">
                    <div class="author">
                        <?= $form->field($model, 'avatar')->widget(FileInput::classname(), [
                                    'name' => 'avatar',
                                    'pluginOptions' => [
                                        'showCaption' => false,
                                        'showRemove' => false,
                                        'showUpload' => false,
                                        'browseClass' => 'btn btn-primary btn-block',
                                        'browseIcon' => '<i class="glyphicon glyphicon-camera"></i> ',
                                        'browseLabel' =>  Yii::t('common','Rasm tanlash'),
                                    ],
                                    'options' => ['accept' => 'image/*'],

                                ]);
                               ?>
                    </div>
                </div>
                <?php ActiveForm::end(); ?>
                <hr>
                <div class="button-container">
                    <button href="#" class="btn btn-neutral btn-icon btn-round btn-lg">
                        <i class="fab fa-facebook-f"></i>
                    </button>
                    <button href="#" class="btn btn-neutral btn-icon btn-round btn-lg">
                        <i class="fab fa-twitter"></i>
                    </button>
                    <button href="#" class="btn btn-neutral btn-icon btn-round btn-lg">
                        <i class="fab fa-google-plus-g"></i>
                    </button>
                </div>
            </div>
        </div>
    </div>

Код модель SingupForm.php :
spoiler
<?php
namespace frontend\models;

use yii\base\Model;
use common\models\User;
use yii\web\UploadedFile;

/**
 * Signup form
 */
class SignupForm extends Model
{
    public $username;
    public $email;
    public $password;
    public $first_name;
    public $second_name;
    public $avatar;


    /**
     * {@inheritdoc}
     */
    public function rules()
    {
        return [
            ['username', 'trim'],
            ['username', 'required'],
            ['username', 'unique', 'targetClass' => '\common\models\User', 'message' => 'This username has already been taken.'],
            ['username', 'string', 'min' => 2, 'max' => 255],

            ['email', 'trim'],
            ['email', 'required'],
            ['email', 'email'],
            ['email', 'string', 'max' => 255],
            ['email', 'unique', 'targetClass' => '\common\models\User', 'message' => 'This email address has already been taken.'],

            ['password', 'required'],
            ['password', 'string', 'min' => 6],
        ];
    }

    /**
     * Signs user up.
     *
     * @return User|null the saved model or null if saving fails
     */
    public function signup()
    {
        if (!$this->validate()) {
            return null;
        }
        
        $user = new User();
        $user->username = $this->username;
        $user->first_name = $this->first_name;
        $user->second_name = $this->second_name;
        $user->email = $this->email;

        $user->setPassword($this->password);
        $user->generateAuthKey();
        if(UploadedFile::getInstance($user, 'avatar') != null)
        {

            $user->avatar= UploadedFile::getInstance($user, 'avatar');
            $imageName = $user->avatar->basename.time();
            $imageName =md5(md5($imageName));
            if (file_exists($imageName.$user->avatar->extension)) {
                unlink("uploads/avatars/".$imageName.$user->avatar->extension);
            }
            $user->avatar->saveAs('uploads/avatars/'.$imageName.'.'.$user->avatar->extension);
            $user->avatar='uploads/avatars/'.$imageName.'.'.$user->avatar->extension;
        }
        else
        {
            $user->avatar='uploads/no_photo.png';
        }


        return $user->save() ? $user : null;
    }
}
  • Вопрос задан
  • 240 просмотров
Решения вопроса 1
slo_nik
@slo_nik Куратор тега Yii
Добрый день.
Для начала добавьте новые поля в правила валидации.
Если новые поля обязательны к заполнению, то сделайте так
[['username', 'second_name'] 'required'],
Если не обязательны, то используйте валидатор 'string' ну или тот, который Вам больше подходит.

p.s. Те поля, которых нет в валидации не проходят.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы