2013-09-06 4 views
2

웹 개발에 codeigniter를 사용합니다. 내가 더 배우면서, 나는 논리적 인 구현을 제대로 할 수없는 몇 가지 문제를 찾고있다.codeigniter의 뷰/컨트롤러 모델 사용

나는 article_controller.php이고보기는 article.php입니다. 페이지의 모든 기사 제목을 표시하려고합니다. (이 코드는 테스트 목적으로 만 사용됩니다.)

내가 기사에 사용 된 모든 이미지가 포함 된 images이라는 또 다른 테이블이 있다고 가정 해 보겠습니다. 따라서 article.php보기에서 images_m.php 모델을 사용할 수 있습니까?

Article_Controller.php

$data['articles'] = $this->article_m->get(); //gets all of the articles 
$this->load->view('articles',$data); 

Article.php

foreach($articles as $article): 
    echo $article->title; 
    $images = $this->images_m->get_by(array('article_id'=>$article->id)); //gets all the images for current article 

    foreach(images as $image): 
     echo "<img src='./uploads/".$image->filename ."'/>"; 
    endforeach; 

endforeach; 

코드는 완벽하게 잘 작동합니다. 여러 웹 사이트에서 비슷한 코드를 사용했습니다. 하지만 주요 문제는보기에서 models을 사용하는 것은 좋지 않다고 읽었습니다. 대신 에 models을 사용하십시오.

그래서 컨트롤러에서 특정 기사의 이미지를 가져올 수 있습니까?

이 (의사 코드) 같은
+0

PHP 대신 SQL을 사용하는 것이 좋습니다. –

+0

기사 데이터와 기사 이미지가 모두 같은 테이블에 저장되어 있다고 나에게 알릴 수 있습니까? –

+0

@RameezSOOMRO 최근 답변에 죄송합니다. 아니 그들은 다른 테이블 위에있다. 다른 테이블에서 액세스하는 주 목적입니다. 그들이 같은 테이블에 있다면 어떤 문제도 없을 것입니다. – prakashchhetri

답변

3

받기 컨트롤러에서 이미지와 이미지가 각 문서 객체와 객체를 병합하고 볼을 통과

$articles= $this->article_m->get(); //gets all of the articles 

foreach($articles as $article): 

    $article->article_images = $this->images_m->get_by(array('article_id'=>$article->id)); //gets all the images for current article 
endforeach; 

$data['articles']=$articles; 
$this->load->view('articles',$data); 

컨트롤러에 images_m 모델을로드했는지 확인하십시오.

+0

매우 근사합니다. 감사합니다. – cartalot

2

뭔가 작동 할 수 있습니다 :

컨트롤러 :

$articles = $this->article_m->get(); 
$images = array(); 

foreach($articles as $article): 
    $images[$article->id] = array(); 

    $article_images = $this->images_m->get_by(array('article_id'=>$article->id)); 
    foreach($article_images as $image): 
     $images[$article->id][] = './uploads/'.$image->filename; 
    endforeach; 
endforeach; 

$data['articles'] = $articles; 
$data['images'] = $images; 

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

보기 : 기본적으로

foreach($articles as $article): 
    echo $article->title; 

    foreach($images[$article->id] as $image): 
     echo "<img src='$image'/>"; 
    endforeach; 

endforeach; 

만 할 당신이보기에하고 있던 같은 작업과 대신 컨트롤러에서 해보십시오. 그런 다음 $data 배열에 던져서보기로 보냅니다.


편집 : 나는 @ dianuj의 대답 :)보고 권 해드립니다