2012-03-19 3 views
1

나는 PHP 초보자로 생각하기 때문에이 질문이 누군가에게 너무 쉽지는 않을 수도 있지만 문제 해결 방법에 대해 혼란스러워합니다. 내 견해에서 데이터베이스에서 무언가를 반복하려고합니다. 그래서 빠른 방법으로 다음과 같이 해결했습니다 :보기에서 PHP MVC 루프

루프를 수행하는 동시에 해당 변수를 저장하는 함수를 만든 것입니다. 그런 다음 컨트롤러에서 해당 변수를 가져 와서 내보기에 전달합니다. 하지만, 내 HTML을 변경하고 싶다면보기 파일 대신 모델 함수를 입력해야하기 때문에 이것은 이것을 해결하는 좋은 방법이 아닙니다.

다음, 나는 다음과 같습니다 내 모델에서 다른 함수를 만들었습니다

function displayUsers() { 
$sql = $this->pdo->prepare('select * from user'); 
$sql->execute(); 
while($row = $sql->fetch()) 
    $results[] = $row; 
return $results; 
} 

지금 ... 나는 내 컨트롤러에 결과를 가지고, 그리고보기에서 보내지 만 다음을 .. 내 변수에서 결과를 추출하는 방법을 모르겠습니다.

을하지만, 결국 그것은 나는 내가 존재하지 않는 배열의 키를 참조하고 의미 오프셋 undefined로 말한다 :이 같은 짓을했다. 아무도이 문제를 해결하는 방법에 나를 도울 수 있습니까?

+0

시도 했습니까? $ output 변수에 무엇이 들어 있는지'var_dump()'를 시도하십시오. –

답변

2

적절한 MVC 모델이나 컨트롤러의 출력을 필요는 없습니다.

이상적으로 원시 데이터를 가져 와서 컨트롤러에서 반환하는 모델을 사용하는 것이 좋습니다. 그러면 컨트롤러는 데이터를 호출 할 값 배열을 작성할 수 있습니다. 예를 들어 :

컨트롤러

$data['users'] = $this->MyModel->getusers(); // Getting the users from your model 
$data['posts'] = $this->MyModel->getposts(); // Getting the posts from your model 
$this->getTemplate('userdisplay', $data); // Get the template userdisplay and pass data 

이 모델에서 데이터를 가져온 다음 "데이터"변수 내에서 키에 할당합니다. 그런 다음 데이터 변수를 템플릿에 전달할 수 있습니다. 그러면 템플릿, $ users 및 $ posts에서 작업 할 두 가지 변수가 생깁니다.

데이터 배열을 템플릿에 사용할 개별 변수에 올바르게 매핑하는 "getTemplate"함수가 필요하지만 모든 디스플레이가 템플릿에 있어야합니다.

가 마지막에 특정 질문에 대답하기 위해이 같은 템플릿에서 작동합니다 : 디버깅

if (count($users) > 0) { 
    foreach ($users as $person) { 
     echo $person['email']; 
    } 
} 
+0

사실, 다른 솔루션을 찾고있는 이유입니다. 첫 번째 MVC 규칙을 따르지 않았기 때문입니다. 대답 해 주셔서 감사합니다. 내가하려는 일입니다. 그것은 나를 많이 도왔다. – Darko

+0

실제로 MyModel 인스턴스를 직접 뷰에 전달할 수 있습니다. 그리고 뷰는 모델로부터 데이터를 가져옵니다. 그렇지 않은 경우 MVP에 실제로 가까이 다가 가고 있습니다. 또한 ..'count()'검사가 필요 없다. 그다지 무의미합니다. 어쨌든, 노력에 +1. –

1

이 작업을 수행 할 수 있어야한다 :

foreach($output as $row) { 
    echo $row['email']; 
} 
+0

맞습니다. 지금은 효과가 있습니다. 충분한 지식이없는 것 같습니다. 그래서 그 점을 생각하지 않았습니다. 고마워요! – Darko

관련 문제