내가 한 노력들

[ CodeIgniter 4 ] Controller로 유저의 요청 처리하기 본문

IT 공부/CodeIgniter

[ CodeIgniter 4 ] Controller로 유저의 요청 처리하기

JONGI-N CHOI 2021. 12. 7. 15:27

Controller 

Controller는 유저가 요청하는 URL을 매핑하여 설정된 함수를 실행하는 처리를 합니다. 

 

 

위치

app\controllers에 위치합니다.

 

 

Controller 생성

<?php
namespace App\Controllers;

class Topic extends BaseController
{
    public function index()
    {
        echo "안녕";
    }
 
}

CodeIgniter에서 Controller에는 무슨 약속이 있는지를 먼저 알필요가 있는데,

 

URL : root경로/public/Controller/method/파라미터 

위와같은 약속으로 controller에 매핑이 되게 됩니다.  

 

이게 무슨말이냐면, 위의 같이 Topic class의 index메소드를 실행시키기위해서는 

URL : 고정경로/topic/index로 요청을 보내야합니다. 

(index는 생략이 가능합니다. "고정경로/topic")

 

위의 index 함수는 그저 화면에 "안녕"을 출력한 것 뿐이지만 

view에 있는 파일을 출력시킬 수 있습니다. 

 

 

view()

<?php
namespace App\Controllers;

class Topic extends BaseController
{
    public function index()
    {
        echo view('topic');
    }
 
}

view()함수를 이용하면, app\views\ 경로에 있는 파일을 검색을하여 화면에 출력시킵니다. 

 

view('topic')은 app\views\topic.php 을 의미하는 것과 같습니다. 

 

 

<?php
namespace App\Controllers;

class Topic extends BaseController
{
    public function index()
    {
        echo view('topic', ['name' => 'jongin']);
    }
 
}

또한, view파일에 데이터를 보내는 것도 가능합니다. 

 

view('topic', 배열)형태로 사용하게 되면, 해당 topic.php파일에서는 배열안에있는 데이터를 사용할 수 있게 됩니다. 

 

topic.php

<div class="col-10">
    <?= $name ?>     
</div>

위와같이 controller에서 받은 $name 데이터를 사용 

 

 

파라미터를 이용

<?php
namespace App\Controllers;

class Topic extends BaseController
{
    public function index()
    {
        echo view('topic', ['name' => 'jongin']);
    }
    
    
    public function get($id)
    {
        echo $id;
    }
 
}

get()함수에는 $id에 인수를 받게 되어있습니다. 

그러면, controller의 약속에 맞춰서 get메소드를 이용하기 위해서는, 

URL : 고정주소/topic/get/3

topic클래스의 get메소드 사용, 파라미터는 3이 됩니다.

 

 

그 외에도 파라미터 관련해서 _remap()이라는 함수도 존재합니다.