MVC undrestandig - PullRequest
       1

MVC undrestandig

0 голосов
/ 19 сентября 2011

Я изучаю различные типы mvc и n-уровневой архитектуры. но я не могу понять, как модель передает данные для просмотра в MVC?

Например, в CakePHP у меня есть контроллер и действия, как это:

function edit($id = null) {
    if (!$id && empty($this->data)) {
    $this->Session->setFlash(__('Invalid user', true));
        $this->redirect(array('action' => 'index'));
    }
    if (!empty($this->data)) {
        if ($this->User->save($this->data)) {
            $this->Session->setFlash(__('The user has been saved', true));
            $this->redirect(array('action' => 'index'));
        } else {
            $this->Session->setFlash(__('The user could not be saved. Please, try again.', true));
        }
    }
    if (empty($this->data)) {
        $this->data = $this->User->read(null, $id);
    }
    $groups = $this->User->Group->find('list');
    $this->set(compact('groups'));
}

в этом разделе:

    if (!$id && empty($this->data)) {
        $this->Session->setFlash(__('Invalid user', true));
        $this->redirect(array('action' => 'index'));
    }

мы проверяем, что идентификатор передан или нет. если не установлено, мы перенаправляем пользователя. чем:

    if (!empty($this->data)) {
        if ($this->User->save($this->data)) {
            $this->Session->setFlash(__('The user has been saved', true));
            $this->redirect(array('action' => 'index'));
        } else {
            $this->Session->setFlash(__('The user could not be saved. Please, try again.', true));
        }
    }

если отправлены данные из вида, мы обновляем строку в дБ. затем:

    if (empty($this->data)) {
        $this->data = $this->User->read(null, $id);
    }
    $groups = $this->User->Group->find('list');
    $this->set(compact('groups'));

и если идентификатор был установлен, и если данные не были отправлены в его сеть, то ранее открытая страница и данные в отношении этого идентификатора будут считаны из БД и отображены в виде.

Теперь я не могу понять, как и где модель передает данные для просмотра в стандартном MVC этого CakePHP ????

спасибо за помощь.

1 Ответ

2 голосов
/ 19 сентября 2011

Модели не отправляют данные на просмотр. контроллеры делают, вызывая метод set. контроллеры используют модели для получения данных из базы данных, а затем отправляют их в представление:

$this->set('myVariable','myValue');

или вы можете использовать compact для одновременной отправки сложных данных, как в вашем примере:

 $groups = $this->User->Group->find('list');
 $this->set(compact('groups'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...