show 메소드 구현
사용자가 인덱스 페이지에서 이름 컬럼을 클릭하면 브라우저는 /project/{id} 에 요청을 보내고 서버는 이에 맞는 프로젝트의 상세 정보를 화면에 표시하는 것이 사용자가 기대한 동작입니다.
artisan route:list 로 확인해 보면 이를 처리하는 메소드는 show() 이므로 기능을 구현해 보겠습니다.
public function show($id)
{
$proj = Project::find($id); //1
if($proj == null) {
abort(404, $id . ' 모델을 찾을 수가 없습니다.'); // 2
}
return view('project.show')->with('proj', $proj); //3
}
CODE
뷰 구현
뷰의 이름이 project.show 이므로 뷰 파일의 경로는 resources/views/project/show.blade.php 을 작성합니다.
@extends('layouts.app')
@section('title')
프로젝트 정보
@endsection
@section('content')
<div class="col-md-8">
<h3>프로젝트 정보</h3>
<div class="form-group">
<label for="Project name">프로젝트 명</label>
<div>
<input type="text" class="form-control" name="name" value="{{ $proj->name }}" readonly="true">
</div>
</div>
<div class="form-group">
<label for="설명">설명</label>
<div>
<textarea class="form-control" rows="3" name="description" readonly="true">{{ $proj->description }}</textarea>
</div>
</div>
<div class="form-group">
<label for="생성일">생성일</label>
<div>
<input type="text" class="form-control" name="created_at" value="{{ $proj->created_at }}" readonly="true">
</div>
</div>
<div class="form-group">
<label for="수정일">수정일</label>
<div>
<input type="text" class="form-control" name="updated_at" value="{{ $proj->updated_at }}" readonly="true">
</div>
</div>
<p>
<a href="{{ route('project.task.index', $proj->id) }}" class="btn btn-info">Task 목록 보기</a>
</p>
</div>
@endsection
CODE
show 뷰는 특별한 내용은 없으며 하단에는 프로젝트에 속하는 태스트를 볼 수 있는 project.task.index 라우팅을 연결합니다.