PHP MVC цикл в представлении - PullRequest
1 голос
/ 19 марта 2012

Я считаю себя новичком в php, поэтому возможно, что этот вопрос слишком прост для кого-то, но я запутался в том, как его решить. Я пытаюсь сделать что-то из базы данных в моих представлениях. Итак, быстро я решил это так:

Я создал функцию в моей модели, которая выполняет цикл и в то же время создает HTML и сохраняет его в переменной. Затем я получаю эту переменную из моего контроллера и передаю ее в моем представлении. Но, похоже, это не очень хороший способ решить эту проблему, поскольку, если я хочу изменить свой HTML, мне нужно ввести функцию модели вместо некоторых файлов представления.

Затем я создал еще одну функцию в моей модели, которая выглядит следующим образом:

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

Теперь ... Я беру результат в свой контроллер и отправляю его в виде, но потом ... Я не знаю, как извлечь результаты из моей переменной. Я сделал что-то вроде этого:

while($output) {
    foreach($output[$i] as $key => $value)
        $data[$key] = $value;
    echo $data['email'];
    $i++;
}

Но затем, в конце концов, он говорит мне неопределенное смещение, что означает, что я имею в виду ключ массива, который не существует. Кто-нибудь может мне помочь, как решить эту проблему?

Ответы [ 2 ]

2 голосов
/ 19 марта 2012

Правильный 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

Получает данные из модели, а затем назначает их ключу в переменной «data». Затем вы можете передать переменную данных в шаблон. После этого у вас будет две переменные для работы с шаблоном: $ users и $ posts.

Вам понадобится функция "getTemplate", которая правильно отображает массив данных на отдельные переменные для использования в шаблоне, но все отображение должно быть расположено в шаблоне.

Чтобы ответить на ваш конкретный вопрос в конце, примерно так должно работать в шаблоне:

if (count($users) > 0) {
    foreach ($users as $person) {
        echo $person['email']; 
    }
}
1 голос
/ 19 марта 2012

Вы должны быть в состоянии сделать это:

foreach($output as $row) {
   echo $row['email'];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...