저번에 게시물 list와 show(상세페이지) 디자인을 완성한상태에서 db를 연동해서 출력하는 부분을 만들었다

@foreach ($posts as $post)
@php
//태그가 포함되어서 저장되기때문에 출력할땐 태그 삭제(사진이 리스트에서 안보이는 효과도 줌)
$content = $post->content;
$content = strip_tags($content);
@endphp
<div class="mt-6">
<div class="max-w-4xl px-10 py-6 mx-auto bg-white rounded-lg shadow-md">
<div class="flex items-center justify-between">
{{-- format()으로 표시할 시간과 날짜 형식을 정함 --}}
<span class="font-light text-gray-600">{{ $post->created_at->format('Y/m/d H:i') }}</span>
</div>
<div class="mt-2">
<a href="{{ route('posts.show',['post' => $post->id]) }}" class="text-2xl font-bold text-gray-700 hover:underline">
{{ $post->title }}
</a>
<p class="truncate mt-2 text-gray-600">
{{ $content }}
</p>
</div>
<div class="flex items-center justify-between mt-4">
<h1 class="font-bold text-gray-700 hover:underline">{{ $post->writer }}</h1>
<h1 class="px-2 py-1 font-bold text-gray-100 bg-gray-600 rounded hover:bg-gray-500">댓글 수 : 00</a>
</div>
</div>
</div>
@endforeach
{{ $posts->links() }}
날짜에서 초단위는 없애기위해 format()함수를 사용하고 글 작성하는 부분에서 ckeditor를 사용했기때문에 db에 html태그가 달린상태로 content에 저장이되어서 strip_tags()를 사용해서 html태그를 지워주는 과정을 거쳤고 이 과정이 이미지를 추가했을때 생길 img태그도 지워주는 역할을 해서 필요한 과정이였다고 생각한다
pagination같은 경우는 laravel에서 기능적으로 지원해주기때문에
public function index()
{
$post = Post::paginate(5);
return view('main',['posts' => $post]);
}
간단하게 해결할수있었다
하지만 출력되는 디자인에서는 수정해야할 부분이 있었기 때문에
라라벨 8.x - 페이지네이션
라라벨 한글 메뉴얼 8.x - 페이지네이션
laravel.kr
이부분을 참고해서 수정할수있었다 tailwindCSS를 사용하기때문에 기본 디자인은 resources\views\vendor\pagination\tailwind.blade.php 경로에 위치해 있었다
상세페이지같은 경우는 쉽게 구현할 수 있었다

라우팅에서 resources 컨트롤러를 사용해서
<a href="{{ route('posts.show',['post' => $post->id]) }}" class="text-2xl font-bold text-gray-700 hover:underline">
{{ $post->title }}
</a>
이렇게 매개변수를 넘겨주고
public function show(Post $post)
{
return view('posts.post_detail',['posts' => $post]);
}
이렇게 받기때문에 컨트롤러부분에서 굳이 db에서 id로 찾아서 가져오는 과정을 거칠 필요가 없어서 간결하게 구현이 가능했다 하지만 content를 출력하는 과정에서 {{ $content }}를 사용하면 html태그가 그대로 출력되는 문제가 있고 리스트쪽에서 했던 strip_tags()를 사용하는 방식을 쓰면 img태그가 안보여져서 고민하던중 {!! $content !!}로 출력하면 html태그를 그대로 출력하지않고 적용(?)시켜서 출력하는 기능이있어서 사용하니 위에 사진처럼 구현이 가능했다
<p class="mx-auto text-base font-medium leading-relaxed text-gray-800">{!! $posts->content !!}</p>
하지만 이방식은 보안쪽에 문제가 있을수있다고 굳이 권장하는 방식은 아니라고 적혀있었다
라라벨 8.x - 블레이드 템플릿
라라벨 한글 메뉴얼 8.x - 블레이드 템플릿
laravel.kr
다음엔 남은 update와 delete기능을 구현해보겠다
'개발일지 > PHP' 카테고리의 다른 글
| 라라벨 블로그 만들기 #10(완) (댓글&대댓글) (0) | 2022.02.22 |
|---|---|
| 라라벨 블로그 만들기 #9(게시물 update&delete + 검색) (0) | 2022.02.07 |
| 라라벨 블로그 만들기 #7(게시물 작성) (0) | 2022.01.27 |
| 라라벨 블로그 만들기 #5(내정보, 사진변경, 이메일 인증) (0) | 2022.01.18 |
| 라라벨 블로그 만들기#4(로그인) (0) | 2022.01.12 |