콘트롤러
==============================================================
class A extends CI_Controller {
public function index()
{
$a['c']=array("a","b","c");
$this->load->view('welcome_message',$a);
}
public function Some()
{
echo "Test 안에 Some 입니다.";
$this->load->view('welcome_message');
}
뷰
=============================================================
<?
foreach($c as $key => $val)
{
echo $val."<br>";
}
?>
주소창에 a 로 들어갈시에는 정상작동합니다만
a/some 으로 갈시에 변수값이 지정되지 않아서 오류 메시지가 나옵니다만 이럴때는 어떻게 해야하나요
A PHP Error was encountered
Severity: Notice
Message: Undefined variable: c
A PHP Error was encountered
Severity: Warning
Message: Invalid argument supplied for foreach()
뷰단에서 몬가 작업해야줘야 하나요
컨트롤러에서 데이터를 넘기지 않아서 없는 것을 호출해서 나오는 에러는 지극히 정상적인 것입니다.
여러 주소에서 같은 뷰를 사용하는 것은 흔한 일이 아닙니다. (헤더, 푸터 제외)
꼭 위와 같이 써야 한다면 빈 배열이라도 넘기세요.
일단 개념적을 설명하자면
index 함수와 some 함수는 별개 입니다.
접속시 a/some 이라고 접속하신 경우 index 함수는 동작(실행)하지 않습니다.
물론 index에 선언된 변수들도, 없는 상태 입니다.
컨트롤러의 메소드(함수) : 는 각각의 페이지 주소와 매핑되여 페이지 역활을 하고, view 와 모델을 연결해주는 역활을 합니다.
view : 사용자에게 제공되는 화면을 구성합니다. 컨트롤러에서 가공된 데이터를 내려받아 화면에 표시하는 역활도 합니다.
자 위에 설명한 데로 보자면 some의 경우 컨트롤러에서 데이터를 아무것도 내려주지 않았기 대문에, view에서는 데이터가 없어서 에러를 표시 한다고 이해 하시면 됩니다.