안녕하세요.
현재 코드이그나이터 이용해서 작성중입니다.
navigation bar에 해당 컨트롤러를 이용하여 해당 값을 넘겨주려고 합니다.
nav는 어디서나 페이지내에서 호출이 되며 해당 php를 호출할 경우 자동으로 값 호출되어야 합니다.
해당 부분에서 호출이 안되어 에러를 뿜어내고 있습니다.
하지만, 해당 nav.php 주소로 들어가야 정상적으로 호출이 되며,
다른 곳 home나 mypage.php 내에 있는 nav.php 이런곳에서는 해당 값이 해당 nav.php로 값이 넘어오지 않습니다.
컨트롤러 안에 아래의 코드를 작성했는데, 어떻게 해야 다른 곳에서 호출하는 nav.php에다가 해당 값을 넘길 수 있을까요?
해당 부분은 어떻게 처리해야할까요?
현재 nav의 컨트롤러 코드입니다.
public function index()
{
$botInfo = json_decode($this->botInfo());
$data["bots"] = $botInfo->bots;
$this->load->view('해당 navbar', $data);
}
변종원 / 답변감사합니다.
제가 원하는 답변은 navbar에 연결된 컨트롤러에서 서버통신하고, 그 값을 어디서나 호출되는 nav바에 붙이는 것이었습니다.
지금 현재 서버통신 호출은 제대로 진행이되고, nav.php가 포함된 home.php, mypage.php에서 nav.php를 호출시 nav컨트롤러에서 변수를 nav.php에 넘기는 부분에서 해당 변수가 nav.php에 들어오지 않아 발생하는 문제입니다.
아쉽지만 제 질문에 맞는 답변이 아닙니다.
좀 고민하다가 찾았는데, nav컨트롤러에선 작동되지 않고, 해당 페이지 컨트롤러에서 해당 서버통신 로직을 추가하여,
아직도 제가 질문을 이해를 못하겠네요. ㅎㅎㅎ
nav.php가 포함된 home.php, mypage.php에서 nav.php를 호출시 nav컨트롤러에서 변수를 nav.php에 넘기는 부분에서 해당 변수가 nav.php에 들어오지 않아 발생하는 문제입니다. -> 이게 무슨 말인지 이해가 되시는 분 계실까요?
변종원 / 죄송합니다. 변종원(웅파)를 보고 치다가 변종파라고 적었네요;;;
기존에 nav에서 호출하는 컨트롤러가 있고,
다른 페이지 부분인 home, mypage 각페이지마다 컨트롤러가 있습니다.
기존에는 nav 자체 컨트롤러에서 서버통신하고 동적 메뉴에 서버통신 값이 들어간 채로 이를 각 페이지에서 그냥 쓰는 방식으로 생각했습니다. include 'nav.php' 이렇게 사용했죠.
하지만 이부분이 생각대로 구현되지 않았고, 어쩔 수 없이 각페이지 컨트롤러에서 말씀하신 방법대로
$this->load->view('header', $data);
$this->load->view('해당 navbar', $data);
$this->load->view('contents', $data);
$this->load->view('footer', $data); 로 처리하였습니다.
kasumil / 컨트롤러에서 다른 컨트롤러를 호출해서 쓰고 싶으신 거였네요. 할 수는 있으나 편의상 제가 알려드린 방법을 일반적으로 사용합니다.
레이아웃 도입해보세요. 1번 선언으로 편하게 사용할 수 있습니다.
헤더와 메뉴, 푸터 부분은 보통 분리해서 뷰를 따로 선언하고 같이 호출하는 형태로 처리하거나
$this->load->view('header', $data);
$this->load->view('해당 navbar', $data);
$this->load->view('contents', $data);
$this->load->view('footer', $data);
레이아웃을 사용하여 1회 선언하여 전체에 적용하는 형태로 사용합니다. (포럼에서 레이아웃 검색해보세요)