Я попытался добавить другое поле для просмотра регистрации:
****** внешний интерфейс / просмотр / регистрация.php
<?php $form = ActiveForm::begin(['action' => ['site/signup'],'options' => ['method' => 'post', 'enctype' => 'multipart/form-data']]); ?>
<?= $form->field($signup, 'email')->textInput(['autofocus' => true, 'data-constraints'=>"@Required @Email"]) ?>
<?= $form->field($signup, 'name')->textInput(['data-constraints'=>"@Required"])->label('Imię') ?>
<?= $form->field($signup, 'surname')->textInput(['data-constraints'=>"@Required"])->label('Nazwisko') ?>
<?= $form->field($signup, 'phone')->textInput(['data-constraints'=>"@Required"])->label('Telefon') ?>
<?= $form->field($signup, 'password')->passwordInput(['data-constraints'=>"@Required"])->label('Hasło') ?>
<?= $form->field($signup, 'password_repeat')->passwordInput(['data-constraints'=>"@Required"])->label('Powtórz Hasło') ?>
<?= $form->field($signup, 'cv')->fileInput()->label('Photo') ?>
<div class="form-group">
<?= Html::submitButton('Signup', ['class' => 'btn btn-primary', 'name' => 'signup-button']) ?>
<?= yii\authclient\widgets\AuthChoice::widget([
'baseAuthUrl' => ['site/auth'],
'popupMode' => false,
'options' => [
'class' => 'btn'
]
]) ?>
</div>
<?php ActiveForm::end(); ?>
Затем в RegistrationForm.php я попытался присвоить Экземпляр файла $ cv , и у меня есть что-то вроде этого:
******** внешний интерфейс / модели / RegistrationForm.php
class SignupForm extends Model
{
public $email;
public $name;
public $surname;
public $phone;
public $cv;
public $password;
public $password_repeat;
/**
* {@inheritdoc}
*/
public function rules()
{
return [
['email', 'trim'],
['email', 'required'],
['email', 'email'],
['email', 'string', 'max' => 255],
['email', 'unique', 'targetClass' => '\common\models\User', 'message' => 'This email address has already been taken.'],
['name', 'required'],
['surname', 'required'],
['phone', 'required'],
[['cv'], 'file', 'extensions' => 'png, jpg'],
['password', 'required'],
['password', 'string', 'min' => 6],
['password_repeat', 'required'],
['password_repeat', 'compare', 'compareAttribute'=>'password', 'message'=>"Passwords do not match" ],
];
}
/**
* 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->email = $this->email;
$user->name = $this->name;
$user->surname = $this->surname;
$user->phone = $this->phone;
$path = '../../common/uploads/' . $this->email . '/';
$this->cv = UploadedFile::getInstanceByName('cv');
if (!is_null($this->cv) || !empty($this->cv)){
FileHelper::createDirectory($path);
$this->cv->saveAs($path . $this->cv->baseName . '.' . $this->cv->extension);
$user->cv = $this->cv->baseName . '.' . $this->cv->extension;
}
$user->password_reset_token = $user->generatePasswordResetToken();
$user->setPassword($this->password);
$user->generateAuthKey();
$user->save();
$auth_assign = new AuthAssignment();
$auth_assign->item_name = 'worker';
$auth_assign->user_id = $user->getId();
$auth_assign->save();
return $user;
}
}
Хорошо, теперь действие - мой контроллер:
******* интерфейс / контроллеры / SiteController.php
public function actionSignup()
{
$signup = new SignupForm();
if ($signup->load(Yii::$app->request->post())) {
if ($user = $signup->signup()) {
if (Yii::$app->getUser()->login($user)) {
return $this->goHome();
}
}
else {
return $this->redirect('site/sign#undefined2');
}
}
}
ПРОБЛЕМА:
Я всегда получаю $cv = NULL
при попытке загрузить файл. Я знаю, что CV не должен быть файлом изображения, но это всего лишь проверка того, что мое решение работает, но, к сожалению, нет ... Перед вопросами - файл представляет собой изображение с правильным форматом "png или jpg", как описано в правилах модели , ребята где я не прав? Пожалуйста, поправьте меня.