CodeIgniter

View

View

뷰란 화면상에 출력되는 내용을 의미한다. CodeIgniter를 이용해서 화면에 내용을 출력하기 위해서는 Controller에서 echo를 하는 것도 방법이지만, View 안에서 UI와 관련된 코드를 작성하는 것이 바람직하다. 

View의 생성

view는 쉽게 말해서 html/css/javascript와 같은 코드를 관리하는 방법이다. application 디렉토리 하위에 views 라는 디렉토리 아래에 php 파일을 생성하고 여기에 웹페이지를 저장한다.

앞선 수업에서는 html 코드를 출력하기 위해서 application/controllers/topic.php 파일에 만든 메소드에서 echo 를 호출하고 있었다. 하지만 이것을 $this->load->view 라는 구문으로 대체했는데 view의 인자로 head, main, footer를 사용하고 있다. 이것은 head.php, main.php, footer.php 파일을 로드하겠다는 의미인데, 이 파일들은 application/views/ 디렉토리 아래에 위치하도록 약속 되어 있다.

또 (head.php, main.php 와 같은) view 파일 내부적으로 변수를 사용하고 있다면  $this->load->view('확장자를 제외한 파일이름', 데이터 배열)의 형식을 이용해서 데이터를 view로 전달 할 수 있다.

view를 사용하는 이유

controller에서 직접 echo를 하지 않고 view를 사용하는 이유는 자원들을 체계적으로 관리하기 위해서다. 딱 봐도 controllers/topic.php 파일이 단순하고 간결해졌다. 또 표현과 관련된 부분은 views 아래로 이동했기 때문에 html/css/javascript를 코딩해야 하는 디자이너나 퍼블리셔의 입장에서 자신의 업무에 집중 할 수 있고, 수정 과정에서 오류가 발생할 수 있는 확률을 낮출 수 있다.

View Source

application/views/head.php

<!DOCTYPE html>
        <html>
            <head>
                <meta charset="utf-8"/>
            </head>
            <body>

application/views/footer.php

            </body>
        </html>

application/views/main.php

토픽 페이지

application/views/get.php

토픽 <?=$id?>

Controller Source

application/controllers/topic.php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Topic extends CI_Controller {
    function index(){
        $this->load->view('head');
        $this->load->view('main');
        $this->load->view('footer');
    }
    function get($id){
        $this->load->view('head');
        $this->load->view('get', array('id'=>$id));
        $this->load->view('footer');
    }
}
?>

Tag

태그명 : View

태그 주소 : https://github.com/egoing/codeigniter_codeingeverbody/tree/View

참고

댓글

댓글 본문
  1. 공부하기
    도움이 되길 바라며 나중에 까먹으면 다시볼 나를 위해 댓글
    CodeIgniter 4.3.1

    index 페이지는 Controllers에 Home.php
    URL 연결이 안된다면 자동라우터 확인하기(공식문서)

    // CI4의 뷰는 이전과 매우 유사하지만 다르게 해석됩니다.
    // CI3의 $this->load->view(x); 대신 return view(x);를 사용합니다.
    function get($id){
    return view('head')
    .view('get', array('id'=>$id))
    .view('footer');
    }

    ------추가
    <?php

    namespace App\Controllers;

    class Topic extends BaseController
    {

    public function index()
    {

    return view('head')
    .view('Topic')
    .view('footer');

    }

    // CI4의 뷰는 이전과 매우 유사하지만 다르게 해석됩니다.
    // CI3의 $this->load->view(x); 대신 return view(x);를 사용합니다.
    function get($id){
    $data = array('id'=>$id); // 캡슐 풀어서 전달하기 배열에 담기
    return view('head')
    .view('get', $data)
    .view('footer');

    }
    ?>
  2. 에픽좀비
    2022.07.15 - 수강완료

    function get($id){
    $this->load->view('head');
    $this->load->view('get', array('id'=>$id));
    $this->load->view('footer');


    function main($id){
    $this->load->view('head');
    $data = array('id'=>$id );
    $this->load->view('main',$data);
    $this->load->view('footer');

    이렇게 변경해야 웹상에서 보여주던데..
    CI버전 탓인지.... 모르겠네요!
  3. dueto park
    2022.06.24. View 수강 완
  4. jeisyoon
    2021.08.13 View - OK
  5. 웹짱
    2020.10.27
  6. Kun-Woo Lee
    좋은 강좌 감사합니다
  7. 김세창
    잘보겠습니다~!! ㅎㅎ
  8. 조관희
    get.php에서 토픽 <?=$id?> 명령어가 수행되지 않습니다.

    -> 토픽 <?php echo $id?>
    위 처럼 수정하시면 됩니다.
  9. 김성호
    첫페이지 접속했을때 왜 index.html 이 아니고 welcome.php 가 연결되는지?
    그걸 모르겠네... 어떤 페이지는 메인 홈페이지 연결했을때는 index 가 열려야 되는거 아닌가요?
    그리고 index 안에 welcome 내용을 넣어야 할것 같은데??
  10. DECIMO
    2016.09.29 감사합니다.
  11. 라진수
    동영상 오류인지 모르겠지만 main.php로 바꿔야한다는 부분이 틀린것같습니다.
    동영상 2:56 부분에서 topic.php를 나중에 바꾸겠습니다 라고 하셨는데
    동영상 14:00 부분에서 topic.php가 아닌 get.php를 main.php로 변경하셨습니다.

    본문하단의 소스파일에서는get.php에 [토픽 <?=$id?>] 가 들어있는데,
    동영상 마지막 수정파일에서는 main.php에 [토픽 <?=$id?>] 가 들어가있습니다.

    좋은 자료 제공해주셔서 감사합니다^^
  12. JustStudy
    고맙습니다
  13. itselfer
    항상 데이터 배열형식의 파라미터를 넣어야하나요??ㅠㅠ
  14. 컨트롤 +[ 를 누르시면 됩니다
  15. 3:05 부분에서 코드를 드로그 한 상태에서 왼쪽으로 옮기는 방법이 궁금합니다.
    오른쪽으로 옮기는 방법은 TAB키를 누르면 되는데 그 반대 방향은 잘 모르겠네요 어떻게 하신거죠?
    sublimetext. 질문.
  16. santutu@naver.com
    PHP에서는 배열 data[id]로 넘겼지만 html에 도착하는 변수는 data[id]의 키값 id이군요
  17. will
    소름돋네요 여태까지의 궁금증이 싹다 풀렸습니다.
  18. 총이
    안녕하세요~^^
    참고: http://php.net......tag
    단축설정은 php.ini의 short_open_tag를 on으로 해주어야 사용가능하다고 합니다.
    php버전 5.4.0부터는 기본 on으로 되어있다네요.
    참고하시고~ 좋은하루 보내세요.
    대화보기
    • 코초
      오 해맬번 했는데 감사합니다!! 단축설정은 어떻게 하는건지 잘 모르겠네요 ㅠ
      대화보기
      • kisstest
        codeignter를 제가 쓰고있는 무료 웹 호스팅 상에 올려놓았습니다.
        로컬에서는 controller/topic.php라는 파일을 만들고 index.php파일에 Topic이라는 클레스를 만들어서 실행하면 잘 나옵니다. index.php파일 제거까지는 한 상태입니다.
        그런데 웹에 올리면 일단 접속은 되는데 http://도메인/topic이라고 치면 없는파일이라고 나옵니다.

        일단 config.php파일의 $config['base_url'] 에 도메인과 그 하위폴더명까지 적어줬습니다.
        어떻게 하다가 되기는 하는데 그게 로컬에서는 topic.php이라고 명명해도 돌아가는데 웹에서는 Topic.php파일이라고 해야만 파일을 찾을 수 있었습니다. 클래스 이름만 첫 글자가 대문자로 시작되면 된다고 들었는데 파일명도 대문자로 시작해야 되는건가요?

        제가 설정을 잘못해서 그런건지 아니면 원래 그런건지 헷갈려서 끄적여 봅니다. ^^:;

        ps - 일단 메뉴얼에 보면 사용자가 작성한 파일이름은 대문로 작성한다고 되어있는데, 로컬에서는 소문자로 작성해도 상관이 없었거든요. 그래서 더 헷갈립니다. controllers에 들어가는 Topic.php만 대문자로 시작하고 views에 들어가는 파일은 topic.php파일로 소문자로 써도 진행이 됩니다. 그렇다면 컨트롤러 함수가 있는 파일은 대문자로 시작되는 이름을 써야되고 나머지는 소문자 파일이라도 상관없다는건가? 하는 생각이 드는데요 ... 제 생각이 맞는건지 아닌지 ...
      • 육점이
        효율적인 관리가 얼마나 생산성을 높여주는지 생각하게 되면서 전율이 느껴지는 곳이네요!!!

        물론 다르지만 자신만의 라이브러리같은 것을 생성하는 느낌 같습니다!!

        항상 감사합니다~
      • jacked
        What does mean the difference? The owner should teach this program regardless of front-end and back-end.
        대화보기
        • HappayDayToday
          This is amazing. Is this the difference between front-end and back-end developers?
        • jungsangun
          좋은 정보 감사합니다. 대단합니다.

          연관배열을 몰라 처음 이부분
          array('id'=>$id)
          헤맸는데

          php에서 연관배열 찾아보니 이해되네요
          감사 감사
        • Geun Il Lee
          와 감동입니다.
        • 김승갑
          좋은 강의 감사합니다. 많이 배워가네요 :D
        • egoing
          좋은 피드백입니다 :)
          대화보기
          • 총이
            좋은정보 감사합니다.~!!
            참고로 application/views/get.php 해당 파일의

            토픽 <?=$id?>

            해당 소스를 수정하는 좋을것 같다는 생각이 들어서요...php단축이 설정되지 않는 사람들은 헤멜것 같습니다.

            표준인? 토픽 <?php echo $id; ?> 요렇게 바꿔주심이 좋을것 같은데요~ㅎ 아니면 <?= ?> 이걸 쓸수 있도록 설명이라도..
            참고해 주세요~!!

            다시한번 정보 감사드려요~!!
          • 오성민
            이게 이것밖에 안되네요 ..ㅠㅠ
          • 소원아빠
            앗!! 참고로 링크를 걸어주신 것 보니 이해가 되네요 ㅎㅎㅎ 암튼 정말 감사합니다.
          • 소원아빠
            동영상 정말 감사히 잘 보고 있습니다.function get($id){ $this->load->view('head'); $this->load->view('get', array('id'=>$id)); $this->load->view('footer'); }에서 array('id'=>$id)) 부분 인자 전달이 이해가 잘 안되요 ㅡㅡ 처음 나오는 'id'와 '$id'의 이름은 반듯이 같아야 하는지 그리고 $id 값은 function get($id)에서 온 것 같은에 array에 'id'는 정확히 무엇을 뜻하나요?
          • 당근쥬스
            application/controllers/topic.php에서 클래스 Topic의 메소드인 get안에
            $this->load->view('get', array('id'=>$id)) 부분에서 어떻게 url의 끝부분인 get/3 의 3이라는 숫자가 id의 변수에 전달 될 수 있는지 궁금합니다.
            그리고 에서 '=' 즉 등호는 어떠한 기능을 하는지요?
            동영상 강의 잘 보고 있습니다. 감사합니다 :)
          • 쌈닭
            :D
          버전 관리
          egoing
          현재 버전
          선택 버전
          graphittie 자세히 보기