
Hell
01.12.2016
17:29:22
нет блин, серьезный вопрос
т.к. решение проблемы уже занимает кучу времени. Ну повторяется, ну и что? Ой у юзера дежа вю случится

Ilya
01.12.2016
17:31:48
сразу забирай из бд свой список ссылок без дубликатов

Google

Hell
01.12.2016
17:32:51
Так этот список ссылок формируется в Smarty шаблоне из различных источников (таблиц БД)

Bohdan
01.12.2016
17:33:56
Проблема не в смарти а в кривой архитектуре в целом
Какого хера смарти (фронт) лезет в бд?

Hell
01.12.2016
17:34:37
Архитектуру не выбирают. Она навязана сверху.
Спросите разработчиков Oxid

Bohdan
01.12.2016
17:36:08
Из Совершенного кода

Hell
01.12.2016
17:36:30
Там сейчас так и просится (в коде шаблона) микро разделение на View и Controller.
На чем пейсать этот ваш микро контроллер в смарти шаблоне?

Bohdan
01.12.2016
17:39:40
Смарти == view из MVC, view != controller
Зачем его туда пихать?

Hell
01.12.2016
17:40:12
Но у меня нет контоллера!

Aleh
01.12.2016
17:40:34
touch path/to/your/Controller.php
не благодари

Google

Hell
01.12.2016
17:40:51
я должен минимизировать кол-во этих.. как иво.. deployment items

Aleh
01.12.2016
17:41:04
tar -c потом

Sergey
01.12.2016
17:41:07
а задача "конвертации" представления данных (из формата приложения в формат UI) ложится на контроллер
смарти в этом плане - тулза которую юзает контроллер для формирования представления данных
"презентационная логика" в контроллерах короч

Bohdan
01.12.2016
17:42:12
Ок, перефразирую, шаблон смарти это часть view. Так лучше?

Sergey
01.12.2016
17:42:17
нет)
шаблон смарти это шаблон смарти
который контроллер юзает для формирования html, который уже будет частью респонса тоесть view в контексте MVC (или MVA)

Hell
01.12.2016
17:42:56
Лучше бы смарти не создавали, да

Bohdan
01.12.2016
17:43:27
Т. е. смарти не попадает в парадигму MVC?

Aleh
01.12.2016
17:43:41
сервер не попадает в нее

Hell
01.12.2016
17:43:45
нет, не попадает.

Aleh
01.12.2016
17:44:01
а смарти, ну чисто в теории, можно

Sergey
01.12.2016
17:44:50
Т. е. смарти не попадает в парадигму MVC?
парадигма MVC (а точнее схема просто) это просто способ убрать связанность между бизнес логикой и презентационной логикой. Причем только в одном направлении (бизнес логика не должна зависеть от презентационной, но презентационная вполне себе зависит от бизнес логики)
в MVC не попадает ни роутеры, ни шаблонизаторы
это лишь средства достижения целей
у MVC намного более простая идея а уж реализация - дело другое
ну и еще были такие ребята которые MVC Model2 придумали для JSX, вот там были роутеры и прочяя шляпа

Google

Hell
01.12.2016
17:45:50
http://stackoverflow.com/a/8710953/444079

Sergey
01.12.2016
17:45:52
лучше забудь вообще эти три буквы и почитай про Model-View-Adapter
а лучше про separation on concerns
MVC это способ решить конкретную проблему, а не зная зачем решать проблему ты не поймешь способ

Hell
01.12.2016
17:46:39
Smarty can be used as a part of View implementation of some MVC framework.
http://www.smarty.net/docsv2/de/language.function.php.tpl
концептуально я должен лучше использовать это

Bohdan
01.12.2016
17:52:20
Одно из предназначений Smarty - это отделение логики приложения от представления.
Конечно же, шаблоны могут содержать в себе логику, но лишь при условии, что эта логика необходима для правильного представления данных. Такие задачи, как подключение других шаблонов, чередующаяся окраска строчек в таблице, приведение букв к верхнему регистру, циклический проход по массиву для его отображения и т.д. - всё это примеры логики представления.
Тем не менее, не следует полагать, что Smarty заставляет вас разделять прикладную логику и логику представления. Smarty не видит разницы между этими вещами, так что переносить прикладную логику в шаблоны вы можете на свой страх и риск.
из доки

Sergey
01.12.2016
17:52:46
> Конечно же, шаблоны могут содержать в себе логику
ПРЕЗЕНТАЦИОННУЮ ЛОГИКУ

Bohdan
01.12.2016
17:53:24
я о том же

Sergey
01.12.2016
17:53:27
сори за капс)
тут соль в separation of concerns
грубо говоря... причина по которой ты хочешь что-то поменять
ты хочешь поменять текст лэйблы - это одна причина
ты хочешь добавить функционал - другая
ты хочешь добавить функционал который относится только к UI - третья
у тебя не должно быть такой ситуации, что ты редактируешь одну и ту же шляпу по нескольким причинам
потому и нужно разделять

Google

Hell
01.12.2016
17:55:02
ОК, а формирование списка ссылок - это какая логика- представления или чего то еще?

Bohdan
01.12.2016
17:55:03
я это понимаю и принимаю, но вот в чем вопрос, если у человека, как он говорит, нет контроллеров, может ли он их делать в смарти и сказать что это разделение? ?

Sergey
01.12.2016
17:55:12
ты формируешь представление списка ссылок для пользователя

Bohdan
01.12.2016
17:56:51
Так этот список ссылок формируется в Smarty шаблоне из различных источников (таблиц БД)

Sergey
01.12.2016
17:56:54
если шаблон "сам" ходит в базу и забирает инфу - это не ок, потому как ты можешь захотеть поменять структуру базы по причине не относящейся к UI
а если ты даешь шаблону смарти какую-то штуку, которая инкапсулирует в себе знания куда ходить, то с определенными оговорками разделение есть
ну мол если у тебя в смарти есть метод userLinkList()

Admin
ERROR: S client not available

Sergey
01.12.2016
17:58:00
или функция
или хз чего, которая полностью прячет откуда данные
то это ничем не отличается от того, что бы в контроллере просто эти данные передать
а вот когда в шаблоне находится что-то вроде
ну короч какая-то логика
)
тип "слазай забери список линок, отфильтруй, отсортируй
и все это в шаблоне - это уже нарушение
ты таким образом "связал" логику работы с данными и презентационную логику
и теперь когда у тебя логика работы с данными "захочет" поменяться, у тебя будут проблемы

Google

Sergey
01.12.2016
18:00:59
короч смарти - это шаблонизатор. Не надо пытаться "притянуть" сюда MVC
у шаблонизатора простая задача - дать возможность разделить "шаблоны" и "данные"
у MVC задача тоже простая - отделить UI от бизнес логики
что бы бизнес логика не зависела от UI
(но не наоборот, мол если меняется UI но не функционал, это не аффектит функционал. А если меняется функционал, это скорее всего затронет UI)
а ладно всем пофиг
)

Hell
01.12.2016
18:12:10
если шаблон "сам" ходит в базу и забирает инфу - это не ок,
ну скажем так, он не обращается к базе напрямую, он обращается к ней через ORM
И к другим обьектам Oxid

Sergey
01.12.2016
18:47:43
тогда это чисто презентационная логика
"обойти массив юзеров" например
что бы сформировать список
но опять же... если говорить о "убрать контроллер"
откуда "шаблон" будет получать "модельки" изначально?
кто ему его даст?

Valentin
01.12.2016
18:51:16
Ух @fes0r разошелся :D

Sergey
01.12.2016
18:51:49
ну и потом, в классическом MVC 79-ого года задача контроллера заключалась исключительно в том, что бы обработать действия пользователей (клики, ввод с клавиатуры), и ничего о view оно не знало. Вьюшка сама себя рисовала и была активной.
Сегодня почти все подходы используют пассивное view, что значит что кто-то должен быть между моделью и пассивной вьюшкой, кто-то должен "управлять" вьюшками.
MVP, MVA, MVVM - это вот туда

da horsie
01.12.2016
18:54:35
ого
кажется кого-то покусал Роберт Мартин

Fayozjon [CybernatiC]
01.12.2016
18:55:26
XSS в Web telegram )