내가 한 노력들

[ codeigniter 4 ] 404 Exception handling 본문

IT 공부/CodeIgniter

[ codeigniter 4 ] 404 Exception handling

JONGI-N CHOI 2022. 3. 10. 18:50

 

public function show($id)
{
    $task = $this->taskModel->find($id);

    return view('Task/show', [
        'data' => $data,
    ]);
}

위의 controller의 show 메소드의 코드에서는 url 파라미터로 task의 id값을 받아와서, show 메소드를 통해 브라우저에 task의 내용을 보여주도록 구현했는데, 존재하지 않는 id를 url 파라미터로 전달했을 경우에는 아래와 같은 Error가 발생하게 됩니다. 

이러한 문제를 해결하기 위해서 Codeigniter의 PageNotFoundException을 이용하여 404페이지를 보여지도록 하면 됩니다. 

 

일단 위와같은 문제가 발생하는 이유는, taskModel의 find() 메소드를 사용할 경우 data를 찾지 못한 경우에 null이 return 되기 때문입니다. 

 

public function show($id)
{
    $task = $this->taskModel->find($id);

    if ($task === null) {

        throw new \CodeIgniter\Exceptions\PageNotFoundException();

    }

    return view('Task/show', [
        'task' => $task,
    ]);
}

위와같이 if문을 이용해서 null인 경우에는 PageNotFoundException() 예외처리를 해주고, data가 존재하는 경우에는 view에 전달하면 됩니다. 

 

 


함수화

이러한 예외처리는 여러 method에서 사용되고 있으므로, 함수로 따로 만들어서 사용하는 것이 좋습니다.

public function getTaskOr404($id)
{
    $task = $this->taskModel->find($id);

    if ($task === null) {

        throw new \CodeIgniter\Exceptions\PageNotFoundException();

    }

    return $task;
}

 

$task = $this->getTaskOr404($id);