[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сказали нет понимания ООП
Эли4ка
Здравствуйте. Недавно решала задачку, использовала контроллер,модель,вью.
Задача проста:нужно добавить данные в БД в таблицу table2. Но форма добавления данных будет показана только в том случае, если есть данные в table1. То есть в контроллере логика должна быть такая(как мне кажется):

class TestController extends Controller {
public function addBox() {
$test = $this->model('Test');
$data = $test->get_data();//array();

if(count($data)>0){
$this->view->generate("addBox", $data);
} else {
$this->view->generate("forbiddenBox");
}
}
}


На что мне сказали, что в контроллере этого быть не должно, нет понимания ООП и назначения модели не только в работе с БД, ну я аж в шоке. Неужто и правда надо было это в модели делать?И потом как еще расширить модель, чтобы она соответствовала модели?
Michael
Цитата (Эли4ка @ 5.03.2019 - 07:24)
На что мне сказали,


кто сказал?
на заборах тоже много чего пишут, что с того..
Если он такой дока, то почему не показал тебе правильное решение, не помог новичку сам, может тогда и не стоит принимать его критиканство всерьез.


Цитата (Эли4ка @ 5.03.2019 - 07:24)

и назначения модели не только в работе с БД

а другой на это так же может сказать что в "модели" не должно быть работы с БД.

_____________
There never was a struggle in the soul of a good man that was not hard
VeRTak
Эли4ка
А что есть так?

class TestController extends Controller {
public function addBox() {
$data = $this->model('Test')->get_data();
$result = count($data)>0 ? "addBox" : "forbiddenBox";
$this->view->generate($result, $data);
}
}

Эли4ка
Цитата (Michael @ 5.03.2019 - 17:57)
кто сказал?

У нас в школе пришел новый парнишка, весь из себя smile.gif сайт нам делать должен tongue.gif
Цитата
Если он такой дока, то почему не показал тебе правильное решение, не помог новичку сам, может тогда и не стоит принимать его критиканство всерьез.

Он сказал, что это решает в крупных проектах через внедрение зависимостей. Только я так и не поняла школьному сайту с посещаемостью в 0.5человека завем эти внедрения зависимостей blink.gif
Цитата (VeRTak @ 5.03.2019 - 21:07)
Эли4ка
А что есть так?

спасибо, хороший вариант laugh.gif
Цитата (Santehnick @ 5.03.2019 - 22:22)
Нет. Модель есть отображение реальности в какую-либо форму: графическую, математическую, программную или иную. Здание или бизнес процесс можно изобразить в виде какой-либо модели, а в его задаче моделировать нечего. Не слушай таких экспертов по ооп.

Спасибо. Слушать больше не буду.
Ron
Цитата (Эли4ка @ 6.03.2019 - 07:24)
Только я так и не поняла школьному сайту с посещаемостью в 0.5человека завем эти внедрения зависимостей

Это как раз у него надо было спросить. И чем не подходит твой Transaction Script тоже.

Однако, я бы, исходя из прочитанного, не стал делать никаких выводов о квалификации. Не известно при каких обстоятельствах и в каком контексте всё это было сказано. Имеет ли этот код отношение к ООП? Нет, считаю, что не имеет, в редакции от VeRTak, кстати, тоже.

Если так будет проще, то рассматривай Model (из MVC) не как один единственной слой в задачи которого входит работа с БД, а как совокупность слоев один из которых будет обеспечивать доступ к хранилищу. В контроллере должна быть логика исключительно связанная с I/O фреймворка. Показывать или нет саму форму я бы вообще отдал на усмотрение вьюхи (фронта) - это же реализация UI. Тем более через AJAX если, судя по названиям.

VeRTak
Ron

А я и не говорил о ООП smile.gif
Эли4ка
Цитата (Ron @ 6.03.2019 - 13:19)
Это как раз у него надо было спросить. И чем не подходит твой Transaction Script тоже.

В понедельник спрошу wink.gif
Цитата (Ron @ 6.03.2019 - 13:19)
Показывать или нет саму форму я бы вообще отдал на усмотрение вьюхи (фронта) - это же реализация UI. Тем более через AJAX если, судя по названиям.

Тут вот какая загвоздка(или это не загвоздка вовсе)
Форма как раз и отдается ответом через аякс запрос, так что во вьюхе наверно не получится это реализовать,ведь запрос конкретный
Ron
Цитата (VeRTak @ 6.03.2019 - 16:02)
А я и не говорил о ООП

Мало ли кто прочитает, подумает не то, это ж форум. =)

Цитата (Эли4ка @ 6.03.2019 - 16:25)
Форма как раз и отдается ответом через аякс запрос, так что во вьюхе наверно не получится это реализовать,ведь запрос конкретный

Вообще конечно через AJAX отдавать кусок HTML такое себе, как по мне лучше избегать по возможности. В отсутствие информации по проекту, будем считать что применение формата JSON не оправдано, иначе говорить более не о чем.

Тогда можно в темплейте условие зафигачить, если массив пуст, - показывать сообщение что невозможно отредактировать (или добавить чего там у тебя). Можно форму дизейблить и сверху/снизу подписывать по какой причине, так было бы намного прозрачнее, имхо.

Смысл убрать условие из контроллера, показывать всегда один и тот же темплейт, просто с разными входными данными. Желательно, кстати, чтобы эти данные были одного типа. То есть пустой массив или не пустой, но массив в том и другом случае. Если добиться одного типа не получается, тогда строгим равенством на true/false.

Эли4ка
Цитата (Ron @ 7.03.2019 - 23:09)
Вообще конечно через AJAX отдавать кусок HTML такое себе, как по мне лучше избегать по возможности. В отсутствие информации по проекту, будем считать что применение формата JSON не оправдано, иначе говорить более не о чем.

Защита от подмены данных. При обращении генерируется хэш для действия и хранится в БД.
Цитата (Ron @ 7.03.2019 - 23:09)
Тогда можно в темплейте условие зафигачить, если массив пуст, - показывать сообщение что невозможно отредактировать (или добавить чего там у тебя). Можно форму дизейблить и сверху/снизу подписывать по какой причине, так было бы намного прозрачнее, имхо.

Попробую так сделать.
Цитата (Ron @ 7.03.2019 - 23:09)
Смысл убрать условие из контроллера, показывать всегда один и тот же темплейт, просто с разными входными данными. Желательно, кстати, чтобы эти данные были одного типа. То есть пустой массив или не пустой, но массив в том и другом случае. Если добиться одного типа не получается, тогда строгим равенством на true/false.

То есть это более лучшая практика, нежели делать ветку if..else?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.