Xpressengine\User\UserHandler::update PHP Method

update() public method

필드: email, displayName, password, status, introduction, profileImgFile, groupId
public update ( Xpressengine\User\UserInterface $user, array $userData ) : Xpressengine\User\UserInterface
$user Xpressengine\User\UserInterface user
$userData array user data
return Xpressengine\User\UserInterface
    public function update(UserInterface $user, $userData)
    {
        $this->validateForUpdate($user, $userData);
        // encrypt password
        if (!empty($userData['password'])) {
            $userData['password'] = $this->hasher->make($userData['password']);
        } else {
            unset($userData['password']);
        }
        // resolve profileImage
        if (!empty($userData['profileImgFile'])) {
            $profileFile = $userData['profileImgFile'];
            $userData['profileImageId'] = $this->imageHandler->updateUserProfileImage($user, $profileFile);
        }
        // resolve group
        $groups = array_get($userData, 'groupId');
        // email, displayName, introduction, password, status, rating
        $userData = array_except($userData, ['groupId', 'profileImgFile']);
        foreach ($userData as $key => $value) {
            $user->{$key} = $value;
        }
        $user->save();
        // join new group
        if ($groups !== null) {
            $changes = $user->groups()->sync($groups);
        }
        return $user;
    }

Usage Example

コード例 #1
0
 public function update($userId, Request $request)
 {
     // basic validation
     $this->validate($request, ['displayName' => 'required']);
     // member validation
     /** @var UserInterface $user */
     $user = $this->handler->users()->find($userId);
     if ($user === null) {
         throw new UserNotFoundException();
     }
     $displayName = $request->get('displayName');
     $introduction = $request->get('introduction');
     // displayName validation
     if ($user->getDisplayName() !== trim($displayName)) {
         $this->handler->validateDisplayName($displayName);
     }
     XeDB::beginTransaction();
     try {
         // resolve profile file
         if ($profileFile = $request->file('profileImgFile')) {
             /** @var UserImageHandler $imageHandler */
             $imageHandler = app('xe.user.image');
             $user->profileImageId = $imageHandler->updateUserProfileImage($user, $profileFile);
         }
         $this->handler->update($user, compact('displayName', 'introduction'));
     } catch (\Exception $e) {
         XeDB::rollback();
         throw $e;
     }
     XeDB::commit();
     return redirect()->route('member.profile', [$user->getId()])->with('alert', ['type' => 'success', 'message' => '변경되었습니다.']);
 }
All Usage Examples Of Xpressengine\User\UserHandler::update