У каждого сотрудника имеется свой код подтверждение, вопрос как его реализовать?
Более подробно есть бд с персоналом, где у каждого уникальный 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', 'Неправильный код подтверждение');
}
}
}
Знаю что неправильно, но примерно как написать код пока мне нее понятно