ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [CodeIgniter] URL 규칙과 URI 가져오기
    프로그래밍/CodeIgniter 2019. 1. 22. 00:16

    ▶CodeIgniter URL 규칙과 URI 가져오기



    ▶설명



    간단하게 코드이그나이터 URL 규칙과 URI 새그먼트를 가져오는 법을 알아보도록 하겠습니다.


    자세한 내용은 아래의 링크를 참고하시기 바랍니다.


    코드이그나이터는 일반적인 쿼리스트링 방식의 URL이 아닌,

    새그먼트 기반의 (Segment-based)의 URL을 사용합니다.


    쿼리스트링 방식과 새그먼트 방식을 비교해보도록 하겠습니다. 


    쿼리스트링 방식 (Query string)



    example.com?category=board&name=news&id=12



    새그먼트 방식 (Segment)



    example.com/board/news/12



    어느 방식이 더 좋다고는 말할 수는 없지만,

    새그먼트 방식이 좀 더 깔끔하게 보입니다.


    ▶URI 새그먼트 (URI Segment)


    이제 URI 새그먼트에 대해 알아보도록 하겠습니다.


    그 전에 한 가지 명심해야하는 점이 있습니다.


    URI 새그먼트는 URL 코드이그나이터 index.php 바로 뒷부분부터 첫 번째 새그먼트로 구분합니다.


    새그먼트 규칙

    1. 첫 번째 새그먼트는 호출될 컨트롤러 class 이름입니다.
    2. 두 번째 새그먼트는 컨트롤러 클래스 안에 호출될 function(또는 method) 이름입니다.
    3. 세 번째 이후에 새그먼트는 컨트롤러로 전달할 변수가 있으면 전달하는 역할을 합니다. (다수 사용 가능)


    index.php가 있는 경우



    example.com/index.php/class/function/data1/data2



    index.php가 없는 경우



    example.com/class/function/data1/data2



    코드이그나이터가 하위 폴더에 위치하는 경우



    example.com/ci/class/function/data1/data2



    ▶URI 새그먼트 가져오기


    이제 URI 새그먼트 값을 가져와 사용하는 방법을 알아보도록 하겠습니다.


    URI 새그먼트를 가져오기 위해서는 URI 클래스가 필요합니다.

    그렇지만, 해당 클래스는 시스템에서 자동으로 로드하므로 직접 로드할 필요가 없습니다.


    사용법


    강조 처리된 부분만 필수 사항입니다.


    $this->uri->segment(새그먼트 번호, 기본값 = FALSE )


    첫 번째 파라미터는 가져올 새그먼트의 번호입니다.

    두 번째 파라미터는 해당 새그먼트가 존재하지 않으면 반환하는 값입니다. 기본값은 FALSE 입니다.


    예제


    URL


    localhost/ci/home/test/add/102



    application/controllers/Home.php

    <?php
    defined('BASEPATH') OR exit('No direct script access allowed');
    
    class Home extends CI_Controller {
    	
    	public function index()
    	{
    		echo "Home!";
    	}
    	
    	public function test()
    	{
    		printf("URI Segment 1 : %s <br/>", $this->uri->segment(1));
    		printf("URI Segment 2 : %s <br/>", $this->uri->segment(2));
    		printf("URI Segment 3 : %s <br/>", $this->uri->segment(3));
    		printf("URI Segment 4 : %s <br/>", $this->uri->segment(4));
    		printf("URI Segment 5 : %s <br/>", $this->uri->segment(5, "End"));		
    	}
    	
    }


    실행 결과

    URI Segment 1 : home 
    URI Segment 2 : test 
    URI Segment 3 : add 
    URI Segment 4 : 102 
    URI Segment 5 : End

    URL에서 새그먼트를 순서대로 가져오고,

    마지막에 새그먼트가 존재하지 않으므로 설정된 기본값으로 반환해주는 것을 알 수 있습니다.


    ▶URL에 접미어 추가


    아래와 같이 설정을 변경하면, URL에 접미어를 추가할 수 있습니다.

    접미어를 추가하면 해당 페이지가 일반적인 웹페이지처럼 보이게 할 수 있습니다.


    application/config/config.php

    // $config['url_suffix'] = '';
    $config['url_suffix'] = '.html';


    URL



    localhost/ci/home/test/add/102.html



    접미어를 붙여도 마지막 새그먼트는 접미어를 제외하고 가져옵니다.


    ▶쿼리스트링 방식으로 사용하기


    새그먼트 방식이 아닌 쿼리스트링 방식으로 사용하고 싶으시다면,

    아래와 같이 설정하시면 됩니다.


    application/config/config.php

    // $config['enable_query_strings'] = FALSE;
    $config['enable_query_strings'] = TRUE;
    $config['controller_trigger'] = 'c';
    $config['function_trigger'] = 'm';
    $config['directory_trigger'] = 'd';

    "enable_query_strings" 값을 TRUE로 변경합니다.

    그리고, 컨트롤러와 함수 호출에 대한 이름은 취향에 맞게 변경하셔도 됩니다.


    ※ 쿼리스트링을 이용하면 URL 헬퍼를 사용할 수 없습니다.


    URL


    새그먼트 URL


    localhost/ci/home/test



    쿼리스트링 URL


    localhost/ci/?c=home&m=test



    ▶마치며


    코드이그나이터에 기본적인 URL 규칙과 URI 가져오는 방법을 알아봤습니다.

    다음에는 URL 헬퍼에 대해 알아보도록 하겠습니다.


    댓글

Designed by Tistory.