2010-11-19 2 views
1

내 모델은 사용자가 특정 게시물을 가져 오는 것입니다. 각 게시물은 또한 comments이라는 배열에 저장된 주석을 가질 수 있습니다. 모든 것이 작동하고 의견을 따라 게시물을 표시 할 수 있습니다. 문제는 각 의견에 의견이있을 때 표시되는 post_date이 있다는 것입니다. "3 주 전에"와 같은 것으로 "변환"하는 함수를 호출해야합니다. 방법 TimeAgo은 내 user_model.php 페이지에 있습니다. 발췌 부분은 data이라는 변수를 보여 주며 실제로 게시물에 해당합니다. 주석은 배열 내부에 포함되어 있으며 내보기에는 루프가 있습니다.Codeigniter :보기에서 메서드 호출

문제는 더 좋은 방법이 있습니까? 아니면보기 페이지에서 TimeAgo 메서드를 호출해야합니까?

참고, mongodb를 사용하고 있지만 mongodb 또는 mysql이 중요하지 않습니다. 같은 일이 ...

user_model.php

$query = array("_id" => new MongoId($plan_id), "username" => $username); 
$fields = array("plan_title", "comments", "post_date"); 

$data = $collection_plans->findOne($query, $fields); 
$data['date'] = self::TimeAgo($data['post_date']->sec); 
$data['username'] = $username; 

return $data; 

답변

2

나의 이해는 내가 도서관이나 도우미, 다음 (자동) 부하 필요할 때마다 내부 TIMEAGO 방법을 넣어 것 맞다면 및 날짜를 ​​처리 그것을 컨트롤러 내에서보기로 전달하기 전에.

이것은 단지 내 user_model.php에서

+0

정확하지만 "우수 사례"를 위해보기에서 메서드를 호출하면 안된다고 가정 해 봅시다. 나는 덜 신경 쓸 수는 있지만 호기심이 많았다. :) – luckytaxi

+0

뷰에서 컨트롤러 메서드를 호출하면 안되지만 헬퍼가 법안을 잘 맞춰야합니다. MySQL 또는 컨트롤러에서 실행되는 선행 처리기 레이어에서 일부 필드 서식을 지정할 수도 있습니다. –

1

당신은에서 모델 메소드를 호출하는 대신, 참으로 당신의 CI 응용 프로그램의 다른 부분을 필요한 경우 다른 모델 내에서 메소드에 액세스 할 수 있도록, 또는 것 컨트롤러에 넣고 변수에 넣으십시오. 그런 다음 var를 뷰에 전달합니다.