본문 바로가기
코드이그나이터와 php7와 mysql

코드이그나이터 뷰의 파라미터 전달

1. 오토셋 APM 인스톨러 ( apache + php7.2 + mariadb ) 설치 | https://itadventure.tistory.com/93

2. 코드이그나이터 4 ( codeigniter 4 ) 설치 | https://itadventure.tistory.com/95

3. 비주얼 스튜디오 코드 에디터 설치 & 한글 설정 | https://itadventure.tistory.com/96

4. 폴더열기 / 웹페이지 편집(1) | https://itadventure.tistory.com/97

5. 웹페이지 편집(2) | https://itadventure.tistory.com/101

6. 코드이그나이터4의 URL 규칙 | https://itadventure.tistory.com/105

7. php, 네임스페이스 [ namespace ] ?! | https://itadventure.tistory.com/118

8. 코드이그나이터의 네임스페이스, 그리고 모델 | https://itadventure.tistory.com/122

♣ 9. 코드이그나이터 뷰의 파라미터 전달 ♣


이번 시간에는 MVC 패턴의 V 에 해당하는 View(뷰)를 다뤄보도록 하겠습니다.
뷰는 코드이그나이터에서 실제 웹페이지에 출력해주는 부분을 담당합니다.

하지만 혼자서는 쓸모가 없고 항상 컨트롤러와 함께 사용해야 합니다.
뷰는 화면에 보여주기 위한 "웹페이지조각"이기 때문입니다.

"웹페이지조각"이 한국어로 표현하기 아주 적절한 것 같습니다.
비록 페이지라는 단어가 외래어이긴 하지만요 :)

컨트롤러에서는 뷰를 통해 웹페이지에 결과를 출력할 수 있는데요.
사실 뷰를 통하지 않아도 echo 문으로 출력이 가능하지만,
디자이너와 일을 분담하기 위해서, 그리고 MVC 패턴의 주목적인 효율성을 따르기 위해서라도
뷰를 이용하는 것이 좋습니다.


그러면 컨트롤러를 아래와 같이 구성해볼까요?
비주얼 스튜디오 코드 에디터에서 파일을 생성하는 방법은
이전 강좌에서 여러번 다루었으니 ( https://itadventure.tistory.com/97 참조 )
파일을 생성하는 상세한 과정은 건너뛰겠습니다 :)

먼저 코드이그나이터4/app/Controllers/Sample.php 컨트롤러 파일을 아래와 같이 구성해 저장해 보세요.

<?php 
namespace App\Controllers;
use CodeIgniter\Controller;
class Sample extends Controller
{
  public function index()
  {
    $data['title']="Title1";
    $data['a']=$_GET['a'];
    return view('sample', $data);
  }
}

그리고 코드이그나이터4/app/Views/sample.php 파일을 아래와 같이 구성하여 저장합니다.

 

sample 페이지에 파라미터 전달 예제<br/>
<?=$title?>&nbsp;
<?=$a?>

다음으로 내 PC에 있는 웹페이지 주소를 호출하면,

http://localhost/sample?a=크레이의IT탐구

아래와 같은 결과가 나옵니다.

sample 페이지에 파라미터 전달 예제
Title1  크레이의IT탐구

다양한 주소로 실험해보시는 것도 좋습니다.
만일 주소를 아래처럼 사용한다면

http://localhost/sample?a=커피가좋아

이런 결과를 만나실 수 있습니다.

sample 페이지에 파라미터 전달 예제
Title1  커피가좋아

그런데 코드이그나이터4/app/Views/sample.php 소스로 보건데,
앞에 보이는 "sample 페이지에 파라미터 전달 예제"는 알겠는데,
"Title1 크레이의 IT탐구"는 갑자기 어디서 생겨난 걸까요?

그것이 바로 오늘의 주요 내용입니다 !
우선 컨트롤러 소스중 아래 3줄을 보도록 할까요?

$data['title']="Title1";
$data['a']=$_GET['a'];
return view('sample', $data);

$data['title'] 변수에는 "Title1"이라는 문자열을 대입하고,
$data['a'] 변수에는 URL에 주어지는 a 파라미터의 값을 대입해줍니다.
우리가 웹페이지 주소를 아래와 같이 호출하였기 때문에, 

http://localhost/sample?a=크레이의IT탐구

a 파라미터 $_GET['a'] 값은 "크레이의IT탐구"가 되는 것이지요.

그러면 $data 배열변수에는 다음과 같이 값이 들어있는 상태가 됩니다.

['title']="Title1";
['a']="크레이의IT탐구";

이 배열 변수를 view 에 넘겨주는데, 아래와 같이 사용합니다.
이 의미는 sample view 페이지를 보여주는데 $data 변수를 사용해라~ 하는 뜻이지요.

return view('sample', $data);

view 페이지를 자세히 보시면 <?=$title?> 이라고 써져 있는 부분이 있습니다.
금방 본 내용과 좀 비슷하지 않나요? 네! 바로 그겁니다.

sample 페이지에 파라미터 전달 예제<br/>
<?=$title?>&nbsp;
<?=$a?>

컨트롤러에서는 비록 $data['title'] 변수에 값을 담아서 view에 전달했지만,
View에서는 이 변수를 $title 로 인식합니다.
$data['a'] 또한 마찬가지입니다. View 에서는 $data 라는 변수는 모릅니다.
다만 $a 만 알 뿐입니다.

그러니 디자이너에게는 이 사실만 알려주면 되는 것이지요.
"$title 이란 변수를 넘길 테니 필요한 부분에 아래와 같이 쓰시오~" 하고 전달하는 것입니다.

<?=$title?>

그러면 디자이너는 복잡한 php 코드는 볼 필요없이 필요한 부분에 위 코드를 사용하면 그만입니다.

컨트롤러와 뷰의 조합, 코드이그나이터에서는 밥먹듯이 필수적인 기술입니다.
이번 시간에는 간단한 예시지만 다음번에는 좀 더 실제적이고 구체적인 예를 들어보도록 하지요.

읽어주시느라 수고하셨습니다.

감사합니다~