潜入这个新的yii 2并且我已经卡住了。我尝试用表单更新用户记录。原始记录正在表单中加载,但更改表单中的值不会更新记录。
public function actionUserprofile()
{
$id = Yii::$app->user->identity->id;
$model = User::find()->where(['id' => $id])->one();
if($model->load(Yii::$app->request->post()) && $model->save())
{
Yii::$app->session->setFlash('success','You have updated your profile.');
}
return $this->render('userProfile', [
'model' => $model,
]);
}
//view form
<div>
<?php $form = ActiveForm::begin(); ?>
<?= $form->field($model, 'username')->textInput(['maxlength' => 255]) ?>
<?= $form->field($model, 'first_name')->textInput(['maxlength' => 255]) ?>
<?= $form->field($model, 'last_name')->textInput(['maxlength' => 255]) ?>
<div class="form-group">
<?= Html::submitButton('Submit',['class'=>'btn btn-success']) ?>
</div>
<?php ActiveForm::end(); ?>
答案 0 :(得分:1)
如果您使用此https://github.com/yiisoft/yii2-app-advanced/blob/master/common/models/User.php
之类的User
模型
您可以像这样创建课程Profile
:
<?php
namespace frontend\models;
use common\models\User;
use yii\base\Model;
use Yii;
/**
* Signup form
*/
class Profile extends Model
{
public $username;
public $first_name;
public $last_name;
/**
* @inheritdoc
*/
public function rules()
{
return [
['username', 'filter', 'filter' => 'trim'],
['username', 'required'],
['username', 'unique', 'targetClass' => '\common\models\User', 'message' => 'This username has already been taken.'],
['username', 'string', 'min' => 2, 'max' => 255],
[['first_name', 'last_name'], 'filter', 'filter' => 'trim'],
[['first_name', 'last_name'], 'required'],
[['first_name', 'last_name'], 'string', 'max' => 255],
];
}
/**
* Signs user up.
*
* @return User|null the saved model or null if saving fails
*/
public function profileSave()
{
if ($this->validate()) {
$user = User::findOne(Yii::$app->user->id);
$user->username = $this->username;
$user->first_name = $this->first_name;
$user->last_name = $this->last_name;
if ($user->save()) {
return $user;
}
}
return null;
}
}
改变控制器
$model = User::find()->where(['id' => $id])->one();
if($model->load(Yii::$app->request->post()) && $model->save())
到
$model = new Profile();
if($model->load(Yii::$app->request->post()) && $model->profileSave())