@hollanditkzn

Как написать валидация для подтверждение кода?

У каждого сотрудника имеется свой код подтверждение, вопрос как его реализовать?
Более подробно есть бд с персоналом, где у каждого уникальный id. и к нему привязан код подтверждение. Только второй вопрос, как сделать так, чтобы сделать валидацию по этому поводу.
Пробовал сделать свою валидацию, только там встал вопрос, как передать в переменную именно те значение которые нужно для определенного сотрудника?
То код у меня такой
В контроллере
public function actionSetting($id)
    {
...
        $personnel = new Personnel();// модель персонала
        $formSotrud = new SotrudForm();//модель формы для подтверждение кода


        return $this->render('setting', [
...
            'personnel' => $personnel,
            'formSotrud' => $formSotrud,
        ]);

    }

Во вьюшке
<?php $form = ActiveForm::begin([
        'id' => 'form-startShift',
]); ?>

<?= $form->field($formSotrud, 'sotrud')->dropDownList(ArrayHelper::map(Personnel::find()->where(['action' => 0])->all(), 'id', 'nameSotrud'),//Список сотрудников, получаем его id
    [
        'prompt' => 'Выберите сотрудника',
    ])->label(false) ?>

<?= $form->field($formSotrud, 'password')->passwordInput()->label(false) ?>//код подтверждение пишет

<?= Html::submitButton('Применить', ['class' => 'btn action']) ?>

<?php ActiveForm::end(); ?>

В SotrudForm
class SotrudForm extends Model{
    public $sotrud;
    public $password;

    private $user;

    /**
     * @return array
     */
    public function rules()
    {
        return [
            [['sotrud', 'password'], 'required'],
            ['password', 'validatePasswordSotrud'],
        ];
    }

    public function validatePasswordSotrud()
    {
        $this->user = Personnel::findOne($this->sotrud);

        if (!$this->user || $this->user->validatePasswordSotrud($this->password)){
            $this->addError('password', 'Неправильный код подтверждение');
        }
    }

}

Знаю что неправильно, но примерно как написать код пока мне нее понятно
  • Вопрос задан
  • 149 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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