我有一个与用户(用户)表相关的配置文件(配置文件)表,
现在,在前端我想更新用户信息,我也在 octobercms 更新用户个人资料信息
怎么做?
先感谢您
Profile.php(配置文件模型)
**//Relation with User**
public $belongsTo = [
'user' => ['RainLab\User\Models\User'],
];
public static function getFromUser($user){
if ($user->profile)
return $user->profile;
$profile = new static;
$profile->user = $user;
$profile->save();
return $profile;
}
Plugin.php(配置文件)
public function boot()
{
UserModel::extend(function ($model) {
$model->hasOne['profile'] = ['GeniusIdea\Profile\Models\Profile'];
$model->bindEvent('model.afterSave', function() use ($model) {
**//it works well when registering the user at the front end**
\Event::listen('rainlab.user.register', function($user) {
ProfileModel::getFromUser($user);
});
**//It does not work,**
\Event::listen('rainlab.user.afterUpdate', function($user) {
ProfileModel::getFromUser($user);
});
});
});
**//it works well when updating user information in the backend**
UserController::extendFormFields(function ($form, $model, $context) {
if (!$model instanceof UserModel)
return;
if (!$model->exists)
return;
ProfileModel::getFromUser($model);
$form->addTabFields([
'profile[skills]' => [
'label' => 'Skills',
'tab' => 'Professional',
'type' => 'text'
],
'profile[experience]' => [
'label' => 'Years of experience',
'tab' => 'Professional',
'type' => 'number'
],
'profile[address]' => [
'label' => 'Professional address',
'tab' => 'Professional',
'type' => 'text'
],
.....
]);
});
}
形式
我使用默认帐户组件(Rainlab 用户),并添加一些字段(配置文件字段)
{{ form_ajax('onUpdate', { model: user }) }}
<div class="row">
<div class="four columns">
<label for="accountName">Nom</label>
<input name="name" type="text" class="form-control"id="accountName" value="{{ form_value('name') }}">
</div>
<div class="four columns">
<label for="accountName">Prenom</label>
<input name="surname" type="text" class="form-control" id="accountSurname" value="{{ form_value('surname') }}">
</div>
............
<button type="submit" class="btn btn-default">Save</button>
{{ form_close() }}