MVC, я делаю это неправильно? - PullRequest
5 голосов
/ 06 января 2012

Я пытаюсь понять MVC и до сих пор знаю, что он используется для отделения бизнес-логики от логики представления (что-то вроде HTML и CSS), но у меня не получается в тот момент, когда мне нужно организовать свои файлы.

Допустим, у меня есть 3 файла:

  • form.php, который отображается для пользователя, он принимает пользовательский ввод и передает данные
  • process.php, который принимает иобрабатывает данные из form.php, затем подключается к базе данных и получает запрошенную информацию
  • display.php, которая отображает обработанные данные (результат) из process.php организованным образом

мой пример:

  • form.php будет контроллером
  • process.php будет моделью, а
  • display.php будет представлением

правый

Ответы [ 6 ]

7 голосов
/ 06 января 2012

Неправильно, на самом деле вы смешиваете модель и контроллер в process.php.

form.php и display.php взаимодействуют только с пользователем, они действуют как представления.

process.php действует как контроллер и модель

Вы должны отделить контроллер и модель. Вы можете создать отдельный файл model.php и выполнять там работу с базой данных. Так что если в будущем вам нужно будет изменить свою базу данных. Вам не нужно трогать process.php. Контроллер и Модель также будут отделены друг от друга

5 голосов
/ 06 января 2012

Я бы сказал, что больше похоже на

  • form.php - Просмотр
  • process.php - Контроллер
  • display.php - Просмотр

Фактической модели нет.Если у вас есть структура данных для представления данных в someDataClass.php, это будет модель.

Вам нужно разделить пользовательский интерфейс (представление), обработку данных (контроллер) и определение данных (модель).

0 голосов
/ 16 февраля 2016

MVC довольно открыта для интерпретации.

Тем не менее, в вашем случае несколько очевидно, что «display» - это ваш V (вид), а «process» - это ваш M (модель).

Вопрос в том ...«form» действительно «C» -контроллер?

Есть несколько способов взглянуть на это.На самом деле правильным способом было бы сделать вашу форму доступной (шаблон, используемый Symfony, Laravel и ZF2).Затем вы передадите объект формы вашему представлению, чтобы отобразить форму в display.php, и после того, как форма будет POST'а, вы будете использовать что-то вроде:

// this will likely happen in your controller action 
$form->setData($postData);
$form->validate();

В CakePHP, с другойстороны, форма далее разбивается на валидацию и вводимые пользователем «части».Таким образом, проверка становится частью вашего «M», а пользовательский ввод остается с «V».

0 голосов
/ 06 января 2012

Проверьте Википедия Я также начал форму здесь, чтобы понять MVC.Если вы хотите разработать свой собственный MVC-фреймворк, вы можете, но я настоятельно рекомендую вам сначала изучить MVC-фреймворки, которые уже доступны с множеством параметров (например, CodeIgniter , Yii и т. Д.).Желаем удачи ...

0 голосов
/ 06 января 2012

Это не совсем правильно, как говорит rao_555. Например, у контроллера не будет формы, которая будет показана пользователю. Если у вас есть форма, а затем отображение данных, оба будут отдельными представлениями.

Это довольно краткое описание шаблона проектирования: http://book.cakephp.org/2.0/en/cakephp-overview/understanding-model-view-controller.html

0 голосов
/ 06 января 2012

Не совсем.
process.php - модель (выполняет тяжелую работу - работает с базой данных)
form.php и display.php - это вид (отображается пользователю)

Но контроллера нет. Контроллер - это что-то вроде клея между моделью и видом. Контроллер получает данные из View и говорит: «Я обработаю их этой моделью». И после обработки он возьмет результат из Model и скажет: «Я покажу данные пользователю в этом представлении»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...