라라벨 부트캠프 글 수정하기

hyHA·2023년 11월 16일
0
post-custom-banner

[프로젝트 시작 전/후 설정]

  1. npm run dev 실행 // webpack이 아닌 vite를 실행하기 위함
  2. php artisan serve 실행// 서버 띄우기
  3. DB실행
    mysql.server start
    mysql -u root -p
  4. DB종료
    exit
    mysql.server stop

목표 : 게시글 소유자가 게시글을 수정할 수 있도록 수정하기

라우트

  • routes/web.php

1. 배열에 edit과 update 추가

  • edit : 수정하는 폼,
  • update : 처리하는 모듈 경로
Route::resource('blog',BlogController::class)
    ->only(['index', 'store','edit','update'])
    ->middleware(['auth','verified']);

2. 경로가 제대로 추가되었는지 확인

php artisan : 명령의 목록이 출력됨

php artisan route:list : 라우트 목록이 출력됨

  • route, edit 추가된 것 확인

view

1. index.php

  • 라라벨 부트캠프에서 Linking to the edit page 부분의 코드 복사 붙여넣기하면 아래처럼 수정버튼 생김

2. edit.php

  • 위의 라라벨 부트캠프에서 Creating the edit form부분의 코드 복사 붙여넣기

Controller

위에서 생성한 수정 파일을 사용하도록 설정

//수정폼
    /**
     * Show the form for editing the specified resource.
     */
    public function edit(Blog $blog): View
    {
        $this->authorize('update',$chirp);
        return view('blog.edit', ['chirp'=> $chirp]);
    }
    
//수정을 처리
    /**
     * Update the specified resource in storage.
     */
    public function update(Request $request, Blog $blog): RedirectResponse
    {
        $this->authorize('update', $blog);

        $validated = $request->validate(['message' => 'required|string|max:255']);
        $blog->update($validated);

        return redirect(route('blog.index'));
    }

update 정책 수정

블리즈는 기본적으로 인증을 사용하기 때문에 update할 사람을 지정해야 함.

php artisan make:policy BlogPolicy --model=Blog
위 명령어 실행 후 나오는 파일로 이동

  • BlogPolicy.php
    /**
     * Determine whether the user can update the model.
     */
    public function update(User $user, Blog $blog): bool
    {
        return $blog->user()->is($user);
    }

이제 수정이 가능하다

참고
https://www.youtube.com/watch?v=aQMZbx3sVjI&list=PLTb3qGCzYjS3qRYk3srTAyrHBnwbML_9m&index=54

profile
룰루랄라
post-custom-banner

0개의 댓글