2012-09-28 3 views
0

저는 현재 프로젝트에서 thats는 많은 날짜를 다루고 있으며 사용자가 다양한 이벤트의 개요를 볼 수있는 하나의보기가 있음을 의미합니다 주.Codeigniter - 복잡한 IF 문을보기 밖으로 이동

보기에는 여러 계정에 대한 여러 이벤트가 표시됩니다.

내가 직면하고있는 문제는 내보기에 현재 날짜 확인, 이벤트 날짜 확인, 이벤트 ID 확인 등 복잡한 복잡한 IF 문이 있으며 문제가 더러워지기 시작합니다. 더 쉽고/간소화 될 수 있습니다!

IF 문을 컨트롤러로 이동하는 방법은 무엇입니까?

CI에 대한 모범 사례를 찾아 보았지만 유용한 정보는 없습니다.

어떤 통찰력이라도 높게 평가 될 것입니다!

+0

은 모델의 상단에 (http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93presenter) 소리 어디 당신이 할 수있는 이 모든 조건을 풀어주고 설명적인 이름을 주었다. – complex857

+1

여러 조각으로보기를 분할하고 if (컨트롤러 또는 "마스터"보기에서)를 수행하고 결과에 따라 특정 조각을로드하는 데 도움이됩니까? –

+0

일부 코드를 게시 할 수 있습니까? –

답변

1

데이터를 준비하는 데 사용되는 별도의 기능 (컨트롤러 또는 라이브러리 내에서)이 필요합니다. 이 함수는 모든 조건부 검사가 필요없이 HTML로 데이터를 구성 할 수 있도록 배열을 반환하면됩니다.

이것은 데이터 사전 라이브러리의 예입니다. 전체 라이브러리를 만들어야하므로 작동하기 만하는 것이 아니라 일반적인 아이디어를 제공하는 것입니다. 당신은 몇 가지 [발표자 클래스]를 필요로 같은

<?php 
class prepare { 
    function prep_page_data($page_id) { 

     $output = array(); 

     $query = $this->ci->db->get_where("page_data", array("page_id" => $page_id)); 

     foreach($query->result_array() as $row) { 
      $output = $row; 
      //complete all addtional checks below 
      if($row['datetime'] < date("Y-m-d 00:00:00")) { 
       $output['archive'] = "old" 
      } 
      else { 
       $output['archive'] = "new"; 
      } 
      //you can add as many conditions as you like to complete the data collection. 
     } 

     return $output; 

    } 
} 

?> 
관련 문제