2012-08-14 2 views
0

우리는 CodeIgniter 애플리케이션에서 mysql 쿼리를 어디에 처리해야합니까? 우리가 게시물의 몸에 뭔가를하려는 경우,codeigniter에서 mysql 쿼리를 처리 할 위치는 어디입니까?

<?php 
while ($post = mysql_fetch_object($query)): 
?> 
<div> 
    <p><?= $post->body; ?></p> 
</div> 
<?php endwhile; ?> 

그러나 :

class Blog extends CI_Controller { 
    function posts(){ 
     $data['query'] = $this->blog_model->index_posts(); 
     $this->load->view('blog_view', $data); 
    } 
} 

및보기 : 컨트롤러

: 간단한 프로젝트의 예를 들어
우리는 다음과 같이 수행 어디에서 인쇄해야합니까?
예를 들어 에코를 수행하기 전에 게시물의 본문을 포맷하고 본문을 전달하는 함수를 작성하고 싶습니다.

CoeIgniter의 구조 및 권장 관행에 따라 배치해야하는 위치는 어디입니까? (최상의 옵션)

  • 컨트롤러에? (있는 경우 사용 방법)
  • 보기에?
  • 도우미 쓰기?
  • 다른 접근?
+0

처럼보기 또는 컨트롤러에서 사용하는, 당신은 이미 잘못하고있다. ** CodeIgniter는 MVC 프레임 워크가 아닙니다 **. MVC와 유사한 것을 구현하지 않습니다. –

+0

Codeigniter는 MVC 프레임 워크가 아닙니다. 그것에 대해 더 설명해 주시겠습니까? – Aliweb

+1

MVC를 구현하지 않습니다. 보기가 없으며 단지 "보기"라고하는 템플리트입니다. 그리고 모델 계층은 없으며 "모델"이라고 부르는 데이터 액세스 클래스 그룹 만 존재합니다. 그리고 나서 "모델"과 모든 프리젠 테이션 로직을 가지고 있지 않은 모든 비즈니스 로직을 하나의 클래스에 넣고 "컨트롤러"라고 부릅니다. 그것은 MVC 패턴이 아닙니다. 마케팅 목적으로 sh * t를 만들고 "mvc"라고 부릅니다. –

답변

0

해당 기능을 다시 사용하려면 도우미를 만드십시오. 이 기능을 한 번만 사용하려면 컨트롤러에 넣고 해당 컨트롤러에서 호출하십시오.

모델은 데이터베이스에 액세스하기위한 것일 뿐이지 만, 대부분 데이터베이스 또는 편집, 삭제 등의 작업에 액세스하고 추가 처리를 위해 컨트롤러에 결과를 전송하기위한 것입니다.

귀하의 경우에는 도우미를 계속 사용합니다.

예. 파일 top_mega_best_functions.php을 작성하고 helper 폴더에 넣으십시오.

당신이 쓰는 것보다. something

function red_text($input) { 

    echo '<span style="color: red;">'; 
    echo $input; 
    echo '</span>'; 
} 

그런 다음 오토로더 파일에 도우미를로드하거나 사용하기 전에로드하십시오.

그리고 당신이 CodeIgnoter를 사용하는 경우

$blablabla = "This text will be red"; 

red_text($blablabla); 
2

다음은 권장 내용은 다음과 같습니다

컨트롤러 :

function posts() { 
    $this->load->model("blog_model"); 
    $data['rows'] = $this->blog_model->index_posts(); 
    $this->load->view("blog_view", $data); 
} 

모델 : (blog_model.php)

function index_posts() { 
    $this->load->database(); 
    $query = $this->db->get('your_table'); 
    $return = array(); 
    foreach ($query->result_array() as $line) { 
     $line['body'] = ... do something with the body.... 
     $return[] = $line; 
    } 
    return $return; 
} 

보기 : (blog_view.php)

<?php foreach ($rows as $line): ?> 
<div> 
<p><?php echo $line['column']; ?></p> 
</div> 
<?php endforeach; ?> 

는 기본적으로 무슨 일 모델 뷰를 통과하고 foreach() 루프를 사용하여 처리하는 다차원 배열을 반환합니다.

행운을 빈다.

+0

내 질문을받지 못했다고 생각합니다. 나는 에코하기 전에 mysql에서 가져온 데이터를 포맷하는 함수를 작성하려고한다고 말했다. 나는이 함수를 쓸 곳과 사용 방법을 물었다. – Aliweb

+0

표시 방법에 대해 이야기하는 경우보기에 배치하십시오. 데이터에 대한 논리를 말하면 모델이나 뷰에 넣을 수 있습니다. 내 편집을보세요 – David

+0

모델에서 내가 무엇을 변경했는지 살펴보십시오. 나는 각 게시물을 단계별로 처리하는 또 다른'foreach()'를 추가했다. (여러분이 처리하고있는 것으로 가정한다.) 그리고 몸체에 대해 뭔가를 바꾸고, 그것을 새로운 배열에 추가하고, 새로운 배열을'echo'에 반환한다. 전망. – David

관련 문제