카테고리 없음

laravel 라라벨 세션에 데이터를 저장하는 방법/put과 flash 비교

백위한 2024. 5. 9. 19:02

게시글을 삭제한 뒤 게시물을 삭제했다는 알림을 세션에 저장하여 보여주는 코드를 작성하려고 한다.

 

세션에 데이터를 저장하는 방법

 

1. put 메서드 사용

2. flash 메서드 사용

 

put 메서드는 데이터를 영구적으로 유지하고자 할 때 사용하고, flash 메서드는 데이터를 일시적으로 저장하고자 할 때 사용한다.

 

put 메서드

세션에 데이터를 저장할 때는 일반적으로 put 메서드를 사용한다.

저장한 데이터를 호출할 때는 session 메서드를 사용한다.

 

// Via a request instance...
$request->session()->put('key', 'value');
 
// Via the global "session" helper...
session(['key' => 'value']);

 

put 메서드는 세션에 데이터를 영구적으로 저장한다.

즉, 세션이 종료될 때까지 데이터가 유지된다.

주로 사용자의 로그인 상태를 세션에 저장할 때 사용된다.

 

 

flash 메서드

 

 

세션에 데이터를 임시저장할 때에는 flash 메서드를 사용한다.

flash 메서드를 사용하여 세션에 저장된 데이터는 저장 즉시 혹은 다음 HTTP 요청에서만 사용할 수 있다.

요청이 완료되면 데이터는 삭제된다.

플래시 데이터는 단기 상태 메시지에 유용하다.

 

$request->session()->flash('status', 'Task was successful!');

 

여러 요청에 대해 플래시 데이터를 유지해야 하는 경우에는 reflash 메서드를 사용한다.

reflash 메서드는 추가 요청에 대한 모든 플래시 데이터를 보관한다.

 

$request->session()->reflash();

 

특정 플래시 데이터만 보관할 때에는 keep 메서드를 사용한다.

 

$request->session()->keep(['username', 'email']);

 

현재 요청에 대해서만 플래시 데이터를 유지하려면 now 메서드를 사용한다.

 

$request->session()->now('status', 'Task was successful!');

 

 

 

작성한 코드는 다음과 같다.

public function delete(Board $board){
    $user = auth()->user();
    if ($user->can('delete', $board)) {
        $board->delete();
        session()->flash('success', '게시물이 성공적으로 삭제되었습니다.');
        // session()->put('success', '게시물이 성공적으로 삭제되었습니다.');
        return redirect()->route('boards.index', $board);
    } else {
        abort(403, '게시물을 삭제할 권한이 없습니다.');
    }
}