저번에 실습했던 아코디언 패널을 이용해서, 게시글 작성자의 아이디를 클릭했을 때, 아코디언 패널이 나오면서 친구추가/쪽지보내기 등등 기능을 사용할 수 있도록 만들었다.
게시글을 볼 수 있는 화면이다.
우측상단에 있는 작성자의 아이디를 클릭하면 아코디언 패널이 나온다.
CSS를 통해서 그래도 사람처럼 보이게 꾸며놨다.
친구추가를 누르게되면 좌측 상단에 친추성공!이라는 알람메세지가 나오게 된다.
그리고 DB에도 현재 접속중인 유저의 id와 게시글 작성한 사람의 id 정보가 저장된다.
이것을 코드로 보게되면
VIEW(resources/view/forum/show.blade.php)
<section class="popup_user">
<dl>
<dt>
<small class="float-right hover:underline">著者 {{ $forum->user->name }}</small><br>
</dt>
<dd style="display:none;" class="float-right bg-yellow-400 border-4 border-blue-400 rounded-md px-2">
<a href="/friend/{{ $forum->user->id }}">친구추가</a><br>
<a href="#">쪽지보내기</a><br>
asdasd<br>
asdasd
</dd>
</dl>
</section>
우선 작성자를 클릭했을 때, 아코디언 패널이 나올 수 있도록 view파일에 코딩
<script type="text/javascript">
$(function(){
$(".popup_user dt").click(function(){
if($(this).next().css("display") == "none"){
$(this).next().slideDown(200);
}else{
$(this).next().slideUp(200);
}
});
});
</script>
script문 작성
<a href="/friend/{{ $forum->user->id }}">친구추가</a><br>
친구추가가 눌렸을 때 도메인/firend/작성자 id 으로 보낸다.
web.php
Route::get('/friend/{id}', [FriendController::class, 'friend']);
친구추가가 눌렸을 경우 web.php에서 friendController에 friend 메소드를 실행시킨다.
App/Http/Controllers/FriendController.php
public function friend($id)
{
$user = List_of_friend::where('user_id', auth()->id())->where('friend_id', $id)->first();
if($user == null && auth()->id() != $id){
$values['friend_id'] = $id;
$values['user_id'] = auth()->id();
$values['forum_id'] = 1;
List_of_friend::create($values);
emotify('success', '친추성공!');
} else {
emotify('error', '이미 친구야 or 자기 자신은 친추 못해요!');
}
return redirect()->back();
}
friend 메소드에서는 작성자의 id를 받아와서 DB에 저장하는 기능을 한다.
하지만, 여기서 제약을 줘야할 것은 이미 DB에 저장된 ID인지 (이미 친추가 되어있는지), 자기 자신은 아닌지의 두가지 경우를 제약을 줬다.
'IT 공부 > Laravel' 카테고리의 다른 글
[ Laravel ] Vue.js로 실시간 채팅(메세지 저장/불러오기) (0) | 2021.04.01 |
---|---|
[ Laravel ] Vue.js를 이용한 실시간 채팅 (유저목록) (0) | 2021.03.31 |
[ Laravel ] Vue.js를 이용한 실시간 채팅 (필요한 개념) (0) | 2021.03.31 |
[ Laravel ] 게시판 만들기 (0) | 2021.03.26 |
[ Laravel ] email 인증을 통한 회원가입. (0) | 2021.03.24 |