반응형
삭제를 위해 삭제 링크를 만들어보자
/resources/views/boards/view.blade.php
@extends('boards.layout')
@section('header')
@include('boards.toptitle', ['toptitle'=>'게시판 보기', 'multi'=>$boards->multi])
@endsection
@section('content')
<table class="table table-striped table-hover">
<tbody>
<tr>
<th width="200">제목</th>
<td>{{ $boards->subject }}</td>
</tr>
<tr>
<td colspan="2">글쓴이 : {{ $boards->userid }} / 조회수 : {{ number_format($boards->cnt) }} / 등록일 : {{ $boards->regdate }}</td>
</tr>
<tr>
<th width="200">내용</th>
<td>{!! nl2br($boards->content) !!}</td>
</tr>
@if(count($attaches)>0)
<tr>
<th width="200">첨부 이미지</th>
<td>
<div class="row row-cols-1 row-cols-md-6 g-4" id="attachFiles" style="margin-left:0px;">
@foreach ($attaches as $att)
<div id='af_{{ $att->id }}' class='card h-100' style='width:120px;margin-right: 10px;margin-bottom: 10px;'><a href="#" onclick="window.open('/boards/imgpop/{{ $att->filename }}','imgpop','width=600,height=400,scrollbars=yes');"><img src='/images/{{ $att->filename }}' width='100' /></a></div>
@endforeach
</div>
</td>
</tr>
@endif
</tbody>
</table>
<div align="right">
@auth()
@if($boards->userid==auth()->user()->userid)
<a href="/boards/write/{{ $boards->multi }}/{{ $boards->bid }}"><button type="button" class="btn btn-secondary">수정</button></a>
<a href="/boards/delete/{{ $boards->bid }}/{{ $boards->pagenumber }}" class="btn btn-secondary" onclick="return confirm('삭제하시겠습니까?');">삭제</a>
@endif
@endauth
<a href="/boards/{{ $boards->multi }}/?page={{ $boards->pagenumber }}" class="btn btn-primary">목록</a>
</div>
@endsection
삭제한 이후에 다시 있던 페이지로 돌아오기 위해 pagenumber를 붙여줬다. 다음은 라우터
/routes/web.php
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\BoardController;
use App\Http\Controllers\MemberController;
Route::get('/', function () {
return view('welcome');
});
//게시판
Route::get('/boards/{multi?}', [BoardController::class, 'index'])->name('boards.index');
Route::get('/boards/show/{id}/{page}', [BoardController::class, 'show'])->name('boards.show');
Route::middleware('auth') -> group(function (){
Route::get('/boards/write/{multi}/{bid?}', [BoardController::class, 'write'])->name('boards.write');
Route::post('/boards/create', [BoardController::class, 'create'])->name('boards.create');
Route::post('/boards/saveimage', [BoardController::class, 'saveimage'])->name('boards.saveimage');
Route::post('/boards/deletefile', [BoardController::class, 'deletefile'])->name('boards.deletefile');
Route::get('/boards/imgpop/{imgfile}', [BoardController::class, 'imgpop'])->name('boards.imgpop');
Route::post('/boards/update', [BoardController::class, 'update'])->name('boards.update');
Route::get('/boards/delete/{bid}/{page}', [BoardController::class, 'delete'])->name('boards.delete');
});
//회원
Route::get('/login', [MemberController::class, 'login'])->name('auth.login');
Route::get('/signup', [MemberController::class, 'signup'])->name('auth.signup');
Route::post('/signupok', [MemberController::class, 'signupok'])->name('auth.signupok');
Route::post('/emailcheck', [MemberController::class, 'emailcheck'])->name('auth.emailcheck');
Route::post('/loginok', [MemberController::class, 'loginok']) -> name('auth.loginok');
Route::post('/logout', [MemberController::class, 'logout']) -> name('auth.logout');
다음은 콘트롤러
/app/Http/Controllers/BoardController.php
public function delete($bid,$page)
{
$boards = Board::findOrFail($bid);
if(Auth::user()->userid==$boards->userid){
$attaches = FileTables::where('pid',$bid)->where('status',1)->get();
foreach($attaches as $att){
unlink(public_path('images')."/".$att->filename);
FileTables::where('id', $att->id)->update(array('status' => 0));
}
$boards->delete();
return redirect('/boards/'.$boards->multi.'?page='.$page);
}else{
return redirect('/boards/show/'.$bid.'/'.$page);
}
}
게시물에 첨부 파일이 있으면 삭제하고 게시물은 테이블에서 삭제했다. status를 0으로 바꿀수도 있는데 그건 첨부파일 삭제할때 해봤으니 이번엔 게시물을 삭제하는걸로 했다.
status를 0으로 업데이트 하고 싶다면 직접 해보자. 여기까지 왔는데 그걸 직접 못한다면 개발자는 내 길이 아니라고 생각하자.
다음엔 웹에디터를 적용하는걸 해보려고 한다. 웹에디터는 내가 좋아하는 summernote를 사용할 거다.
반응형
'PHP강좌 > [라라벨]게시판만들기강좌' 카테고리의 다른 글
[라라벨+mysql]게시판 만들기 강좌의 지금까지 소스 모음 (0) | 2024.07.31 |
---|---|
[라라벨+mysql]게시판 만들기 강좌 #20. 사용자 함수 등록하기 (0) | 2024.07.31 |
[라라벨+mysql]게시판 만들기 강좌 #18. 게시물 수정하기 (0) | 2024.07.30 |
[라라벨+mysql]게시판 만들기 강좌 #17. 팝업으로 이미지 보기 (0) | 2024.07.30 |
[라라벨+mysql]게시판 만들기 강좌 #16. 보기 페이지 수정 (0) | 2024.07.25 |