우선 게시판 목록의 뼈대를 만들어 보자.
/resources/views/boards/layout.blade.php
<!doctype html>
<html lang="kr">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>게시판</title>
</head>
<body>
<div class="container">
@yield('content')
</div>
</body>
</html>
CI랑 뭔가 비슷하면서 다르다.
/resources/views/boards/index.blade.php
@extends('boards.layout')
@section('content')
<h2 class="mt-4 mb-3">게시판 목록</h2>
<div style="text-align:right;">
<button class="text-xl">등록</button></a>
</div>
<table class="table table-striped table-hover">
<colgroup>
<col width="10%"/>
<col width="15%"/>
<col width="45%"/>
<col width="15%"/>
<col width="15%"/>
</colgroup>
<thead>
<tr>
<th scope="col">번호</th>
<th scope="col">이름</th>
<th scope="col">제목</th>
<th scope="col">조회수</th>
<th scope="col">등록일</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
@endsection
대충 어떻게 하는지 알것이다. 이제 화면을 열어보면...
이렇게 보여지게 된다. 이제 여기다가 baord 테이블에서 데이터를 가져와서 뿌려보자.
BoardController를 수정한다.
/app/Http/Controllers/BoardController.php
<?php
namespace App\Http\Controllers;
use App\Models\Board;
use Illuminate\Http\Request;
class BoardController extends Controller
{
public function index(){
$boards = Board::orderBy('bid','desc')->paginate(20);
return view('boards.index', compact('boards'));
}
}
$boards에 board테이블 값을 가져온다. 라라벨은 기본 index가 id 이기때문에 id가 아닌 경우엔 직접 입력해주어야 한다. 우리는 bid니까 입력해주어야한다. 안그러면 오류난다.
$board의 값을 boards폴더의 index.blade.php로 넘겨주는데 boards라는 이름으로 넘겨준다. $boards와 compact('boards')의 boards는 같은 이름이어야 한다.
/resources/views/boards/index.blade.php
@extends('boards.layout')
@section('content')
<h2 class="mt-4 mb-3">게시판 목록</h2>
<div style="text-align:right;">
<button class="text-xl">등록</button></a>
</div>
<table class="table table-striped table-hover">
<colgroup>
<col width="10%"/>
<col width="15%"/>
<col width="45%"/>
<col width="15%"/>
<col width="15%"/>
</colgroup>
<thead>
<tr>
<th scope="col">번호</th>
<th scope="col">이름</th>
<th scope="col">제목</th>
<th scope="col">등록일</th>
</tr>
</thead>
<tbody>
@foreach ($boards as $board)
<tr>
<th scope="row">{{ $board->bid }}</th>
<td>{{$board->userid}}</td>
<td>{{$board->subject}}</td>
<td>{{ date("Y-m-d",strtotime($board->regdate)) }}</td>
</tr>
@endforeach
</tbody>
</table>
@endsection
콘트롤러에서 받은 $boards값을 blade문을 이용해 foreach로 돌려서 화면에 뿌려줬다. blade파일에도 php문을 사용할 수 있지만 blade문을 써봤다.
이렇게 수정하고 다시 화면을 보면...
이렇게 나온다.
이제 페이징도 적용해 보자. 페이징을 적용하기 전에 아래 링크에서 부트스트랩을 적용하는 것을 보고 우선 적용한다.
https://programmerdaddy.tistory.com/407
다시 파일을 수정한다.
/resources/views/boards/index.blade.php
@extends('boards.layout')
@section('content')
<h2 class="mt-4 mb-3">게시판 목록</h2>
<div style="text-align:right;">
<button class="text-xl">등록</button></a>
</div>
<table class="table table-striped table-hover">
<colgroup>
<col width="10%"/>
<col width="15%"/>
<col width="45%"/>
<col width="15%"/>
<col width="15%"/>
</colgroup>
<thead>
<tr>
<th scope="col">번호</th>
<th scope="col">이름</th>
<th scope="col">제목</th>
<th scope="col">등록일</th>
</tr>
</thead>
<tbody>
<?php
$idx = $boards->total()-(($boards->currentPage()-1) * 20);
?>
@foreach ($boards as $board)
<tr>
<th scope="row">{{ $idx-- }}</th>
<td>{{ $board->userid }}</td>
<td>{{ $board->subject }}</td>
<td>{{ date("Y-m-d",strtotime($board->regdate)) }}</td>
</tr>
@endforeach
</tbody>
</table>
<div>
{!! $boards->withQueryString()->links() !!}
</dvi>
@endsection
페이징에 걸맞게 조금 수정했다. 이렇게 적용하고 확인해보면
이렇게 나온다.
다음엔 게시판 보기 페이지를 만들어 보자.