반응형

우선 게시판 목록의 뼈대를 만들어 보자.

 

/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">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
    <script src="https://code.jquery.com/jquery-latest.min.js"></script>
    <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

 

[라라벨]페이징에 부트스트랩(bootstrap) 적용하기

\app\Providers\AppServiceProvider.phpnamespace App\Providers;use Illuminate\Pagination\Paginator;use Illuminate\Support\ServiceProvider;class AppServiceProvider extends ServiceProvider{    /**     * Register any application services.     *     *

programmerdaddy.tistory.com

 

다시 파일을 수정한다.

 

/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

 

페이징에 걸맞게 조금 수정했다. 이렇게 적용하고 확인해보면

이렇게 나온다.

 

다음엔 게시판 보기 페이지를 만들어 보자.

 

반응형

+ Recent posts