Где этот код должен жить в структуре MVC? - PullRequest
1 голос
/ 06 июля 2011

Я много читаю и получаю действительно смешанные результаты.

Скажите, у меня есть такой код?

$name = trim($_POST['name']);
$email = trim($_POST['email']);

if(strlen($name) > 0 & strlen($email) > 0)
{
   $u = new User();
   $u.name = $name;
   $u.email = $email;
   $u.validate();
}

Где должен жить этот код? Код, который на самом деле проверяет форму, чтобы убедиться, что она имеет реальные значения? Я говорю Модель, но что, если ваша форма охватывает несколько моделей?

Я немного сбит с толку, и любая помощь, чтобы прояснить это, была бы признательна.

Ответы [ 5 ]

3 голосов
/ 06 июля 2011

Идеально для полного разделения интересов:

Controller должен собирать массив $_POST и передавать его в Model.

Тогда model будет выполнять обработку, такую ​​как обрезка и проверка.

Я хотел бы +1, чтобы Модель содержала бизнес-логику.

2 голосов
/ 06 июля 2011

проверки на уровне модели должны гарантировать целостность базы данных. все эти проверки должны находиться в вашем методе u.validate ().

вы можете дополнительно добавить проверки на уровень контроллера в качестве оптимизации или для выполнения какого-либо действия просмотра.

я бы так перестроил.

код контроллера

   $u = new User();
   $u.name = $_POST['name'];
   $u.email = $_POST['email'];
   if ($u.validate() && $u.save()) {
       // success code
   } else {
       // fail 
   }

код модели

class user {
...
function validate() {
   if (empty($this->name) || strlen($this->name) < 1)  return false;
   if (empty($this->name) || strlen($this-email) < 1)  return false;
}
...
1 голос
/ 06 июля 2011

Это отличная статья, в которой дается объяснение MVC в PHP Oreilly Ответы выше верны, но для того, чтобы вы по-настоящему использовали MVC, нужно понимать, почему каждая часть идет туда, куда она идетНадеюсь, эта статья подтолкнет вас в правильном направлении.

1 голос
/ 06 июля 2011

Поместите это в секцию model, потому что модель содержит бизнес-логику.

Ссылка

0 голосов
/ 06 июля 2011

Если вы проверяете данные перед сохранением (например, электронная почта, имя), то я голосую за модель.

Ваша структура MVC должна иметь возможность проверять данные каждой модели.

В конце концов, MVC - это архитектура.Нет определенного шаблона.Так что решать вам.Много времени выигрывает последовательность.То есть, если вы хотите поместить его в контроллер вместо модели, делайте это по всему коду.

...