BoardController.php 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. namespace App\Http\Controllers\Board;
  3. use Illuminate\Http\Request;
  4. use App\Http\Controllers\Controller;
  5. use App\Http\Requests\BoardRequest;
  6. use App\Services\BoardService;
  7. use App\Models\Board;
  8. use App\Models\BoardMeta;
  9. class BoardController extends Controller
  10. {
  11. protected BoardService $boardService;
  12. protected string $code; // 게시판 코드
  13. protected Board $board; // 게시판 정보
  14. protected BoardMeta $boardMeta; // 게시판 설정 값
  15. public function __construct(Request $request, BoardService $boardService)
  16. {
  17. $this->middleware(['front', 'authed']);
  18. // 게시글 접근 권한 확인
  19. $this->middleware('board.access')->only('index');
  20. $this->boardService = $boardService;
  21. $this->code = $request->route('code');
  22. }
  23. /**
  24. * 공지사항 / 게시글 목록 또는 검색 결과
  25. * @method GET
  26. * @see /board/{code}
  27. */
  28. public function index(BoardRequest $request)
  29. {
  30. $this->board = $request->board;
  31. $this->boardMeta = $request->boardMeta;
  32. $boardID = $this->board->getKey();
  33. // 분류
  34. $categories = $this->boardService->categories($boardID);
  35. // 공지사항
  36. $notices = $this->boardService->notices($request);
  37. // 일반 게시글
  38. $posts = $this->boardService->posts($request);
  39. $listURL = route('board.list', $this->code);
  40. $writeURL = route('board.post.write', $this->code);
  41. return view(layout('board.index'), [
  42. 'board' => $this->board,
  43. 'boardMeta' => $this->boardMeta,
  44. 'categories' => $categories,
  45. 'notices' => $notices,
  46. 'posts' => $posts,
  47. 'params' => $request,
  48. 'listURL' => $listURL,
  49. 'writeURL' => $writeURL
  50. ]);
  51. }
  52. }