@oop_ru

Страница 355 из 785
Sergey
07.10.2017
10:31:13
и этот самый createCache

Ilshat
07.10.2017
10:31:28
открыли список групп-> перешли на 5ую страницу->открыли список юзеров у первой группы-> у юзера есть список групп куда он привязан-> нажали добавить новую группу-> появляется окошко с спиком всех групп и пагинация стоит на первой

Google
Sergey
07.10.2017
10:32:56
ты ж там что-то про redux говорил

Ilshat
07.10.2017
10:32:57
лучше попробуй нарисовать

Sergey
07.10.2017
10:33:04
написать*?

Ilshat
07.10.2017
10:33:07
у меня нету щас редакса

нет нарисовать)

Sergey
07.10.2017
10:33:43
до редаксов я стэйт в сервисах хранил

Ilshat
07.10.2017
10:33:47
увидешь что фигня получется если сервис один и тотже, пагинация сбросится на первом окошке

Sergey
07.10.2017
10:34:14
увидешь что фигня получется если сервис один и тотже, пагинация сбросится на первом окошке
так, не понял. У тебя открыт список групп, и надо в модалке еще один отпрыть. так?

и там должна быть разная пагинация? или одинаковая?

Ilshat
07.10.2017
10:34:26
разная

Sergey
07.10.2017
10:34:28
или во втором списке нет пагинации?

Ilshat
07.10.2017
10:34:37
везде есть

и таких может быть 10 вложенных

Google
Sergey
07.10.2017
10:35:09
ну ок, не будем пока ux темы обсуждать

по факту у тебя сейчас реализовано - стэйтфул компоненты и стэйтлесс сервисы, так?

Ilshat
07.10.2017
10:35:39
не шарю

я код пишу книг не читаю

Sergey
07.10.2017
10:35:49
компонент хранит че там у него по пагинации?

я код пишу книг не читаю
что такое "состояние" шаришь?

Ilshat
07.10.2017
10:36:11
стайт

я на реакте писал

Sergey
07.10.2017
10:37:02
ну это все меняет

Ilshat
07.10.2017
10:37:42
лан мне надо код писать, харе болтать, спс за советы, пригодятся

Егор
07.10.2017
11:31:58
Допустим есть User, который может подписаться на автора. Если рассматривать User как сущность с поведением, то в голову приходит такой код: class User { subscribeTo(Author author) { this.subscriptions.add(new Subscription(this, author)) } }Но требования поменялись, теперь если User не подтверждён, то он не может иметь больше трёх подписок. Где делать проверку - в сущности или в сервисе? Если в сервисе - то нужно ли дублировать эту проверку в сущности?

Егор
07.10.2017
11:40:02
В юзере хватает данных. Неподтверждённый пользователь может подписаться только на трёх авторов. То есть достаточно if (!this.isConfirmed && this.subscriptions.count() > 2) { сообщить пользователю о том, что подписаться он не может. }Если помещать проверку в сущность, то что должен возвращать метод subscribe? Постоянно выбрасывать исключения мне не очень нравится.

Google
Sergey
07.10.2017
11:42:26
но исключение чуть что кинуть надо

(или ивент, но это другая история)

Егор
07.10.2017
11:43:52
Переформулирую - мне не очень нравится ловить исключения. Думаю это не ислючительная ситуация. Пользователь может попытаться подписаться, а в ответ должен получить сообщение о том, что ему нужно подтвердить аккаунт.

andretshurotshka?❄️кде
07.10.2017
11:44:29
Either)

Sergey
07.10.2017
11:45:02
ну то есть ты можешь статус операции если хочешь возвращать и в случае если нельзя чуваку добавлять - вернуть что все плохо

но это такое...

тут на клиентский код надо смотреть. Мне проще - у меня апишки. Если что-то идет не так - кидаю исключение и клиент сам уже рисует скрин нужный

Егор
07.10.2017
11:49:26
Хорошо, спасибо за ответ. Фраза "где у тебя хватает для этой проверки данных" заставила хорошо задуматься.

Sergey
07.10.2017
11:51:06
почитай про "информационный эксперт"

Max
08.10.2017
16:22:53
Господа, день добрый. Вопрос - нормально ли выбрасывать эксепшены в бизнес-логике или лучше\проще возвращать что-то типа err_msg? Допустим, юзер хочет добавить какие-то данные, контроллер эти данные передает в хандлер-сервис, там они проверку не проходят. Понятно что юзеру надо об этом сказать (т.е. flash message), но на уровень контроллера бросать эксепшн или просто возвращать строку err_msg (с учетом того что это надо еще и залогировать)?

Ilshat
08.10.2017
16:27:07
обрабочик ошибок сделай общий, чтобы стэк трйс не выплевывать всем подрят и отдавай в таком виде какой запросили, если json то отдавай json: {error:'Error text'}, html: <html>trollo с версткой сайта</html> а логируй уже со стеком

ну если ты бэк пилишь)

Max
08.10.2017
16:31:33
Перефразирую вопрос - когда в случае с бизнес-логикой выплевывать эксепшн, когда можно просто вернуть строку error_msg?

Ilshat
08.10.2017
16:33:46
Ну я против эксепшенов нативных, ошибки бизнес логики 400, и жсон

Нативный тока 500)

Послушаем что другие скажут

А то как это будет выводиться уже пусть фронт решает

Max
08.10.2017
16:41:36
Ну я против эксепшенов нативных, ошибки бизнес логики 400, и жсон
Не, я не хочу рендерить 404, если есть ошибка в бизнес-логике, если он ввел некорректные данные (валидация которых проверяется несколькими запросами к бд например), то ему рендерится нормальная страница, где просто указано где-нибудь сообщение с ошибкой.

Ilshat
08.10.2017
16:42:34
Ну 400 как раз для этого же

Google
Ilshat
08.10.2017
16:42:48
404 это нет данных

Max
08.10.2017
16:44:20
Ну 400 как раз для этого же
Ок, тогда как пример - юзер пытается зарегистрироваться в сервисе, но при этом уже имеет аккаунт со своим текущим ip aдресом. Бизнес-логика требует, чтобы на каждый аккаунт был уникальный ip. Мне же не выбрасывать 400 страницу в этом случае?

В моем понимании, его редиректит на главную, и выводится сообщение где-нибудь, что, мол, "по правилам 1 аккаунт = 1 ip адресс".

Ilshat
08.10.2017
16:48:02
403 Forbidden[19] — сервер понял запрос, но он отказывается его выполнять из-за ограничений в доступе для клиента к указанному ресурсу. 

Вот это наверное

Max
08.10.2017
16:53:08
403 Forbidden[19] — сервер понял запрос, но он отказывается его выполнять из-за ограничений в доступе для клиента к указанному ресурсу. 
На большинстве сайтов, если юзер вводит email-адресс, который уже присутствует в бд, его же не редиректит на 403 страницу?

Sergey
08.10.2017
16:53:54
Андрэ
08.10.2017
16:55:11
Ну и исключения сильно лучше тем, что легко разрулить - для веба один ответ, для API другой

Max
08.10.2017
16:56:24
Как изначально валидировать ip то?

Sergey
08.10.2017
16:56:29
вот бизнес лейер не должен ничего спрашиваьт/делать для ui

Sergey
08.10.2017
16:57:11
filter_var ip ?
ему бизнес ограничение надо проверить. Для этого должен быть сервис который можно заюзать или спросить есть ли такие сущности

Sergey
08.10.2017
16:57:23
а формат проверить это да, легко

Max
08.10.2017
16:57:30
Контроллер идет в сервис-класс с бизнес-лейером, оттуда возвращается exception, который ловится в контроллере, я правильно понял?

Google
Sergey
08.10.2017
16:58:07
можешь просто сделать штуку которая говорит "есть такой" или "нет такого"

все сильно от задачи зависит

Андрэ
08.10.2017
16:58:20
Мне кажется БЛ должен вернуть инфо об ошибке

Sergey
08.10.2017
16:58:36
ты должен понять что пошло не так, но этого может не хватать для ui layer

Max
08.10.2017
16:59:00
зачем?
Понятно, он получает от функции в бизнес-логике true\false, и далее уже как-то показывает это в ui. Я получил ответ на свой вопрос, спасибо.

Андрэ
08.10.2017
16:59:08
Может быть, но все завист от архитектуры и задачи, сам так же считаешь ведь

Страница 355 из 785