2011-02-23 3 views
1
class SelectedModel extends CI_Model { 

    var $title = 'SelectedModel'; 
    var $content = 'get top n articles'; 
    var $date = '23.2.2011'; 

    function __construct() 
    { 
     parent::__construct(); 
    } 

    function getTopArticles() 
    { 
     $result = $this->db->query('select top 5 article from articles;'); 
     if(! $result->num_rows() > 0) 
      die('There are no articles in db.'); 

     return $result; 
    } 
} 


class Front extends CI_Controller { 

    function __construct() 
    { 
     parent::__construct(); 
    } 

    function index() 
    { 
     $this->load->database(); 
     $this->load->helper(array('text', 'html')); 
     $this->load->model('SelectedModel'); 

     // controller process data and validate it 
     $top_articles = $this->SelectedModel->getTopArticles(); 
     foreach($top_articles->result() as $item) 
     { 
      $item->desc = character_limiter($item->desc, 75); 
      if(strlen($item->image) == 0) 
       $item->desc = '/images/default.png'; 
     } 


     $data['title'] = 'title'; 
     $data['random_articles'] = $top_articles; 
     $this->load->view('front', $data); 
    } 
} 

전면 : MVC의 내 지식이 맞다면codeigniter SQL 결과를 처리 할 위치는 어디입니까?

php foreach($random_articles->result() as $item): 
    php echo $item->desc 
    php echo br() . $item->image 
php endforeach; 

가 궁금하네요. 컨트롤러에서 데이터를 처리하고보기에 표시 할 수 있도록 데이터를 준비합니다. 보기에는 html/css 코드와 echo $ var에 대한 공간 만 있습니다. 모델 기능은 데이터를 가져 오는 것입니다.

데이터를 처리하는 다른 방법이 있습니까? 내 길은 괜찮 니?

최적화 문제 : $ top_articles = $ this-> SelectedModel-> getTopArticles(); PHP가이 줄을 어떻게 관리하는지 정확히 모르겠습니다. '

php foreach($random_articles->result() as $item): 
    php echo character_limiter($item->desc, 75) 
    php echo br() . if(strlen($item->image) == 0) echo images/default.png''; else echo $item->image; 
php endforeach; 

그러나이 방법으로 내가 돈 : 난 그냥 $ 경우 top_articles을 요구하고있어 getTopArticles의 복사본입니다, 그래서 난 내보기에 사용한다면 나는 두 배나 많은 메모리를 사용

전면보기 MVC를 사용하지 마십시오 (view에서는 character_limit, .... 사용).

+0

많은 코드와 이에 대한 설명이 있습니다. 그러나 나는 당신이 실제로 요구하는 것을 결정하는 것처럼 보이지 않습니다. – jzd

+0

어떤 컨트롤러, 모델, 뷰에서 데이터를 처리/검증하는지 묻고 있습니다. 내가 컨트롤러에있는 데이터를 처리/검증하고이를보기 위해 전달합니다. 모델에서 데이터를 생성합니다. – broadband

답변

0

나는 아이디어를 얻은 것으로 생각한다. MVC 방식은 항상 더 나은 최적화를 의미하지는 않습니다.

모델에서 데이터를 생성하여 컨트롤러에 전달한 다음 뷰로 전달하는 것이 올바른 방법입니다. 마치 많은 행이있는 뷰에서 모든 데이터를 처리 할 수있는 것처럼 보이지만 코드

+0

답변 해 주셔서 감사합니다. 최적화 외에 내 주요 질문은 MVC 방식으로 볼 때 또는 모델에없는 컨트롤러에서 데이터를 처리/검증하는 것입니다. 보기에는 데이터 만 표시하면됩니다. 컨트롤러에서는 if (isset ($ data)) .. if (strcmp ($ data, "something) ....와 같은 일을 할 수 있습니다. 프로그래밍 언어에도 불구하고 뷰에서 echo/print/show (의사 코드) 데이터 – broadband

+0

데이터 처리/검증을 위해서는 컨트롤러에서이 작업을 수행해야합니다. 항상 모델 매개 변수에 xss/db 정리 된 데이터를 전달하십시오. 폼 헬퍼를 사용하는 경우 컨트롤러에서도 양식 유효성 검사가 수행됩니다 모델은 특정 유형의 데이터를 검증 할 수 있어야하지만 이것은 유효성 검증 프로세스가 정확히 무엇을했는지에 달려 있다고 생각합니다. –

관련 문제