2014-05-15 5 views
0

codeigniter 컨트롤러에 html 태그가 있으면 괜찮습니까? 가끔은 논리를보기 또는 html로 컨트롤러로 옮겨야한다고 결정하기가 어려웠다.CI 컨트롤러의 html 태그

프로필 소유자와 관리자에게만 텍스트 영역을 보여주고 싶다고 가정 할 때까지는 두 가지 방법으로 수행 할 수 있습니다.

$ 데이터 [ '텍스트 영역'] = ""와 같은 컨트롤러

if($this->session->username() == $user || $this->session->username() == $administrator){ echo '<textarea></textarea>'; }

  1. 같은 관점에서 퍼팅 HTML 태그를 더 PHP 퍼팅; 만약 $ ($ this-> session-> username() == $ user || $ this-> session-> username() == $ administrator) {

    $ data [ 'textarea'] = 'html textarea tages는 여기에 간다 ';

    }

    $ this-> 하중 ->보기 ('예'$ 데이터);

다른 많은 경우가 있습니다. 컨트롤러에서 HTML 태그를 분리하는 것이 거의 불가능하거나 어려웠습니다. 하위 메뉴가있는 메뉴를 표시하고 싶습니다. 주 메뉴에 두 개의 foreach 루프를 실행해야합니다. 주 메뉴에 하위 메뉴가있는 경우에만 실행되는 하위 메뉴의 두 번째 메뉴가 있습니다.

답변

0

컨트롤러를 사용하여 모델과 통신하고 결과를 가져 와서보기에서 쉽게 처리 할 수 ​​있도록 준비하십시오. 즉, 데이터를 표시하는 것이 주요 목표 인 작업을 생각하면이 작업은보기로 수행해야합니다. 당신이 보여준 두 가지 옵션에 관해서, 저는 1로 갈 것입니다. 논리와 표현을 더 잘 분리시키는 생각을 다루고 있다고 생각합니다.

0

기본 간단한 조건문 및 루프는보기에 괜찮지 만 컨트롤러에는 html 코드가 없어야합니다. 첫 번째 옵션에 대한, 어쩌면 당신은해야한다 :

컨트롤러 :

$data['is_admin'] = ($this->session->username() == $user || 
        $this->session->username() == $administrator); 

$this->load->view('example', $data'); 

보기 : 당신은

<html> 
... 
<?php if ($is_admin): ?> 
    <textarea></textarea> 
<?php endif; ?> 
... 
</html> 

예는, 당신은 볼이 조건 중복 코드를 삽입 할 수있다 접근 될 수 있지만 세션 값은 '논리'이므로 컨트롤러가 수행해야합니다. 조건부도 논리적이지만, 컨트롤러와 관련된 CI_Session 클래스의 값을 얻는 방법을 알 수 있습니까?