2013-07-20 1 views
-1

로그인 페이지와 메뉴를 볼 수있는 다른 모든 페이지의 두 가지 유형의보기가 있습니다. 로그인하지 않은 경우 메뉴가 표시되지 않습니다.정의되지 않은 변수 - var가 존재하는지 확인하는 방법

지금 내가 달성하고자하는 것은 머리글과 바닥 글이 자동으로로드되고보기가 호출 된 컨트롤러에 따라 내용이 동적 인 1 개의 템플릿을 사용하는 것입니다.

로그인 컨트롤러

$data['content'] = 'login_view'; 
$data['menu'] = 'nomenu'; 
$this->load->view('templates/template', $data); 

을이이 순간

이것은 당신은 내가 '우승 볼 수 있습니다처럼 내가 컨트롤러

$data['content'] = 'profile_view'; 
$this->load->view('templates/template', $data); 

에 기록 내 에있는 것입니다 보내는 중 $data['menu']

및 내 보기 그렇게 같다 :

여기서 문제는 내 컨트롤러

A PHP Error was encountered 
Severity: Notice 

Message: Undefined variable: menu 

Filename: templates/template.php 

Line Number: 7 

에 기록됩니다

<?php $this->load->view('templates/header'); ?> 
<?php 
    if($menu == 'nomenu'){ 

    } 
    else{ 
     $this->load->view($menu); 
    } 
?> 
<?php $this->load->view($content); ?> 
<?php $this->load->view('templates/footer'); ?> 
내 $ 메뉴가 난 단지 $ 메뉴를 보낼 것이기 때문에 존재하는지 확인하는 방법이 있나요 그것은 로그인보기, 그렇지 않으면 내가 실 거예요.

+0

변수가 "정의되지 않음"인지 확인하지 마십시오. 단지 * 될 수 없는지 확인하십시오. - "정의 된"것인지 확인하는 데 필요한 적절한 기본/감시를 사용하십시오. 이렇게하면 결국 깨끗한 코드가 생성됩니다. 많은 프로그래밍 언어가 "정의되지 않은"변수 사용을 금지하고 그렇게하려고하는 코드에서 * 오류 *라고 생각하십시오. – user2246674

+0

그게 가능한 해결책이지만, 모든 컨트롤러에서 항상'data [menu] '를 보내야 만합니다. 로그인 컨트롤러에서 온 경우에만 보내고 싶습니다. – mXX

+0

그게 내가하는 일입니다. "정의되지 않은"변수를 사용하지 마십시오! 반면에, 나는 선택적인 키들로지도 콜렉션을 사용하는 것이 좋다고 본다. – user2246674

답변

0

그 간단한 그냥 변수가 정의되어 있는지 확인하기 위해 isset를 사용하거나하지

<?php $this->load->view('templates/header'); ?> 
<?php 
    if(isset($menu) && $menu== 'nomenu'){ 

    } 
    else{ 
     $this->load->view($menu); 
    } 
?> 
<?php $this->load->view($content); ?> 
<?php $this->load->view('templates/footer'); ?> 

을 당신은 아마에 load을 넣어 당신의 $ 메뉴가 다른 경우에 설정되지 않는 경우가 발광 체크하기 때문에 경우 정의되지 않은 오류가이

<?php $this->load->view('templates/header'); ?> 
<?php 
    if(isset($menu) && $menu== 'nomenu'){ 
    $this->load->view($menu); 
    } 
    else{ 
     $this->load->view('load other view'); 
    } 
?> 
<?php $this->load->view($content); ?> 
<?php $this->load->view('templates/footer'); ?> 
+0

이것은 여전히'정의되지 않은 변수 : menu'를 준다. – mXX

+0

당신의 다른 사건 때문에 내 업데이트 된 답변 –

+0

그래, 그 속임수 않았다. 그것을 지적 주셔서 감사합니다 – mXX

0

처럼 그것을 또는 데이터가 [ '메뉴']가 FALSE = $를 보내야한다; 두 번째 컨트롤러에서

+0

나중에 더 많은 컨트롤러가있을 것이기 때문에 그렇게 할 수 없습니다, 그리고 나서 모든 컨트롤러에 추가해야 할 것입니다. – mXX

관련 문제