@alexsteadfast
I am noob

Почему не обновляются данные таблицы в Yii2?

есть форма
<?php
use yii\helpers\Html;
use yii\bootstrap\ActiveForm;
$baseUrl = Yii::$app->request->baseUrl; 
?>
<div>
<? 
$username = $user -> username;
$mail = $user -> email;
$phone = $user -> phone;
$ava = $user -> ava;
$status = $user -> status;
$pass = $user -> password;
$id = $user -> id;
?>
<?php $form = ActiveForm::begin([ 'method' => 'POST', 'options' => ['enctype' => 'multipart/form-data']]) ?>
					<?= $form->field($EditUserAdmin, 'username')->textInput(['value' => $username]) ?>
					<?= $form->field($EditUserAdmin, 'email')->textInput(['value' => $mail]) ?>
					<?= $form->field($EditUserAdmin, 'phone')->textInput(['value' => $phone]) ?>
					<?= $form->field($EditUserAdmin, 'password') ?>
					<?= $form->field($EditUserAdmin, 'status') ?>
					<?= $form->field($EditUserAdmin, 'id')->textInput(['value' => $id]) ?>
					<?= $form->field($EditUserAdmin, 'ava')->fileinput() ?>
					<img src='<?='../../web/'.$ava?>'> <br>
					<?= Html::submitButton('Сохранить', ['class' => 'btn btn-success']) ?>
					<?php ActiveForm::end() ?>

</div>


Контроллер
public function actionUsers()
    {

								if(Yii::$app->request->get()){
									$EditUserAdmin = new EditUserAdmin();
									$user = $_GET['user'];
									$user_result = User::find()->where(['username' => $user]) -> one();					
									return $this->render('Edituseradmin',[
									'EditUserAdmin' => $EditUserAdmin,
									'user' => $user_result ]);
								}
 								if(Yii::$app->request->post()){	    
									$id = $_POST['EditUserAdmin']['id'];			
									$user = User::find()->where(['id' => $id]) -> one();
									
									    $user->username=$_POST['EditUserAdmin']['username'];
										$user->email=$_POST['EditUserAdmin']['email'];
										$user->phone=$_POST['EditUserAdmin']['phone'];
										$user->password=md5($_POST['EditUserAdmin']['password']);
										$user->ava=$_POST['EditUserAdmin']['ava'];
										$user->status=$_POST['EditUserAdmin']['status'];
										$user->update();
																		
										return Yii::$app->response->redirect(Url::to('index'));
								} 
		$users = user::find()->all();	
		return $this->render('users',[
            'users' => $users,
        ]);  
    }


данные передаются в массив POST, но как я понимаю условие if(Yii::$app->request->post()) в контроллере не срабатывает, никак не могу понять почему. Подскажите пожалуйста, что я упустил, в дебагере юи ошибок нет и на форме ошибок нет, данные просто отправляются и всё, а должны отправляться, переходить в условие и отрабатывать код после условия.
  • Вопрос задан
  • 334 просмотра
Пригласить эксперта
Ответы на вопрос 3
@sidni
Php Developer
1)Дикость....А зачем вы напрямую к $_POST обращаетесь, когда есть метод load
2) Вместо Yii::$app->request->post()
используйте
Yii::$app->request->isPost
Ответ написан
1 Используйне вместо таких конструкции $_POST['EditUserAdmin']['username'] на такие
Yii::$app->request->post('EditUserAdmin')['username']
Ну если Вы используете Yii2
Обычно используют не так Yii::$app->response->redirect(Url::to('index')
А вот так this->redirect(['controller/index'])
Второй момент обычно не update() а save() по крайне мере я так использую в своих проектах.
Включите во первых ошибки примерно так
if($user->save()){
return $user->getErrrors();
}

Если не сохраняет то выведит ошибку.
Если до post не доходит то используй примерно var_dump() И туда что хочешь проверяй, чтобы понять проходит post у тебя или нет. Допустим var_dump(Yii::$app->response->post());
Ответ написан
Комментировать
@vnpp
Необходимо выполнить проверку результата вызов
$user->update()
который, в отличие от save() возвращает FALSE или количество измененных записей, а save() только TRUE/FALSE.
При валидации данные могут быть отвергнуты.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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