[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Запутался в MVC
Страницы: 1, 2, 3, 4
chee
Цитата (Dezigo @ 9.10.2015 - 14:15)
View читает прямиком не из модели, а из контролера, который их получил откуда-то.

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

Но я не отрицаю этого подхода, возможно ТС даже такой реализации будет достаточно.

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Invis1ble
Цитата (chee @ 9.10.2015 - 14:36)
Цитата (Dezigo @ 9.10.2015 - 14:15)
View читает прямиком не из модели, а из контролера, который их получил откуда-то.

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

херню сморозил, это опциональная фича в симфони, никто не заставляет ей пользоваться

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

chee
Цитата (Invis1ble @ 9.10.2015 - 14:37)
херню сморозил, это опциональная фича в симфони, никто не заставляет ей пользоваться

Ок. Как мне получить данные из модели, правильным способом, не написав овердофига кода? Желательно ссылку на доку, что бы бест практикс.

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Invis1ble
Цитата (chee @ 9.10.2015 - 14:42)
Цитата (Invis1ble @ 9.10.2015 - 14:37)
херню сморозил, это опциональная фича в симфони, никто не заставляет ей пользоваться

Ок. Как мне получить данные из модели, правильным способом? Желательно ссылку на доку, что бы бест практикс.

ссылку не дам, но пару примеров навскидку опишу
- классически: передавать во вьюху нужные данные из контроллера
- создать сервис и сделать twig function, которая отображает нужные данные

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Oyeme
Цитата (chee @ 9.10.2015 - 10:42)
Цитата (Invis1ble @ 9.10.2015 - 14:37)
херню сморозил, это опциональная фича в симфони, никто не заставляет ей пользоваться

Ок. Как мне получить данные из модели, правильным способом, не написав овердофига кода? Желательно ссылку на доку, что бы бест практикс.

Привидите Ваш пример.

В Zend тоже самое как и в symfony.
McLotos
chee
Это не баг. Это фича =))
Тоже не люблю симфони, весь код как после мясорубки.

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
chee
Цитата (Invis1ble @ 9.10.2015 - 14:46)
- классически: передавать во вьюху нужные данные из контроллера
- создать сервис и сделать twig function, которая отображает нужные данные

То есть, то же самое что я и говорил. Заставить View активно выбирать данные из модельки самой, да при том еще и в шаблонах. Костыль, уже не явный.

Цитата (Invis1ble @ 9.10.2015 - 14:46)
- классически: передавать во вьюху нужные данные из контроллера

а он работает, на чем то, что сложнее сайта визитки? Скажи мне, как в этом случае передавать информацию не только по контент области, а по сайдбарам, менюшкам и прочим блокам? Выбирать ее вручную и дублировать код?

Цитата (McLotos @ 9.10.2015 - 14:48)
Тоже не люблю симфони

Мои негативные чувства в данном случае относятся только к теме встраивания данных из контроллера в шаблоны. Немогу сказать про весь фреймворк.

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
chee
Цитата (Oyeme @ 9.10.2015 - 14:48)
В Zend тоже самое как и в symfony.

Да, на сколько я помню, у них такой же подход, во втором, так как архитектура контроллеров полностью такая же.

Цитата (Oyeme @ 9.10.2015 - 14:48)
Привидите Ваш пример.

Я уже приводил примеры, тут http://phpforum.su/index.php?showtopic=87759

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Invis1ble
Цитата (chee @ 9.10.2015 - 14:54)
То есть, то же самое что я и говорил.

Нет, не то же самое.
Цитата (chee @ 9.10.2015 - 14:36)
нужно вызывать контроллер для забора данных

Вызов контроллера из шаблона делает конструкция вида {% render controller ... %} в шаблоне.

Цитата (chee @ 9.10.2015 - 14:54)
Заставить View активно выбирать данные из модельки самой, да при том еще и в шаблонах.

Ну нет же, где активное "выбирание"? Передаются готовые данные в scope, которые выводятся обычным echo.

Цитата (chee @ 9.10.2015 - 14:54)
Скажи мне, как в этом случае передавать информацию не только по контент области, а по сайдбарам, менюшкам и прочим блокам?

Цитата (Invis1ble @ 9.10.2015 - 14:46)
- создать сервис и сделать twig function, которая отображает нужные данные
Dezigo
Вообще сам класс Template создан не корректно, так как
1. Все методы свойства доступны из вне
2. Передай сам конфиг в шаблон
$this->tpl  = new Template();
$this->tpl->load($config);


$this->tpl = new Template();
$this->tpl->ext = '.tpl'; //расширение для файлов шаблона
$this->tpl->htm = '.htm'; //раширение для файлов кэша
$this->tpl->skinDir = $cfg->getConfig('dirViews'); //директория с шаблонами
$this->tpl->skin = $cfg->getConfig('defaultSkin'); //имя шаблона
$this->tpl->cache = $cfg->getConfig('dirViews') . 'cache'; //директория куда должен сохраняться кэш страницы.
$this->tpl->lang = $cfg->getConfig('defaultLang'); //язык по умолчанию
$this->tpl->clearElements = $cfg->getConfig('clearElements'); //false - не удалять с шаблона те переменные, значения которых неизвестны
$this->tpl->saveCache = $cfg->getConfig('saveCache'); //false - не сохранять кэш
$this->tpl->useHF = $cfg->getConfig('useHF'); //false - не использовать header и footer как отдельные файлы. у нас базовый шаблон, всё встраиваем в него
$this->tpl->assign('LANG', $lang); //передаем в шаблон перевод некоторого текста на язвк пользователя
$head = array('CSS'=>$cfg->getConfig('mainPage') . $cfg->getConfig('dirViews') . $cfg->getConfig('defaultSkin') . '/style.css',
'JS'=>$cfg->getConfig('mainPage') . $cfg->getConfig('dirJS') . 'scripts.js');
$this->tpl->assign('HEAD', $head);

Быстрый ответ:

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