
SiZE
27.04.2017
17:58:33
в данном примере он базовый

Nurik
27.04.2017
18:02:08
в данном примере он базовый
User и Post базовые для тех что модулях
api/
common/
controllers/
UserController.php
PostController.php
models/
User.php
Post.php
modules/
v1/
controllers/
UserController.php
PostController.php
models/
User.php
Post.php
Module.php
v2/
controllers/
UserController.php
PostController.php
models/
User.php
Post.php
Module.php
И это плохо.
Потому что следуя логике, юные подаваны, будут всё наследовать.

Google

Nurik
27.04.2017
18:03:44
И зачем спрашивается такое связанный кусок говна нужен. Если можно изолировать каждую версию. ЧТо места на диске жалко чтоли ?

SiZE
27.04.2017
18:03:57
так ты когда рест пишешь тут в принципе не должно быть никаких изменний если ты версию зафиксировал
это типа "соглашение" негласное везде )

Nurik
27.04.2017
18:06:45

SiZE
27.04.2017
18:11:01
С родителем просто чуть сложней будет отследить визуально
Вообще в апи главное структура, а результат дело десятое )
вот если структура выдачи изменится это похуже )

Nurik
27.04.2017
18:19:14
Вообще в апи главное структура, а результат дело десятое )
В APi главное прозрачность. Т.е. чтобы не было затруднений при его использовании.(со стороны разработчиков и клиентов) Я просто буду всегда ожидать подвох в этом месте и подозрвевать всех кто со мной будет писать код. Мне выгоднее избавитсья от такой хрени, чем учавствовать в мексиканской дуэли.

SiZE
27.04.2017
18:26:37
так нее.. в апи у тебя есть интерфейс, который ты даешь конечному пользователю или кому-то там еще
подходов много и разных. это один из так сказать

Boris
27.04.2017
20:56:08
Ребят, подскажите, пожалуйста в чем может быть проблема.

Ivan
27.04.2017
20:57:42
ну видимо бессоница, уже 3 утра, а ты не спишь)

Google

Dmitriy
27.04.2017
20:58:07
А что хоть за проблема ?

Boris
27.04.2017
21:00:16
Имею класс SoftDelete extends ActiveRecord
Еще один Countries extends SoftDelete
В Countries есть метод:
public static function getCountries()
{
return self::find()->select(['name', 'id'])->indexBy('id')->column();
}
Все хорошо отрабатывает как надо, но phpstorm светит ошибку:
http://dl4.joxi.net/drive/2017/04/28/0017/0874/1139562/62/6b0452966a.png
Ошибка раздражает, вроде все ок наследуется, а почему не видит методы вот?

Ivan
27.04.2017
21:02:48
как будто Актив квэри не видит

Boris
27.04.2017
21:04:16
Yep

Ivan
27.04.2017
21:10:17
перезапуск шторма не помогает?

Boris
27.04.2017
21:10:44
Индексирует
Нет, не помогло
Кэш почистил

Ivan
27.04.2017
21:15:40
может какой то плагин обновился?

Boris
27.04.2017
21:18:53
хз даже

Anatoly
27.04.2017
21:21:56
хз даже
find переопределён? Если да, убедитесь, что там @return static а не @return $this

Boris
27.04.2017
21:25:28
/**
* @return ActiveQuery static
*/
public static function find()
{
return parent::find()->where([self::$isDeletedAttribute => false]);
}
Помогло, спасибо.

Artur
28.04.2017
06:10:27
Всем привет.
Как выводить в логи доп. инфу?

Boris
28.04.2017
06:11:19
Привет. В какие логи, какую инфу?

Artur
28.04.2017
06:12:03
Ну типа, произошла ошибка. В логи пишется инфа, мне туда надо добавить еще пару полей.

Виталий
28.04.2017
06:14:21
http://sentry.io/

Google

Artur
28.04.2017
06:15:08
а в родной так не сделать?

SiZE
28.04.2017
07:02:45

Boris
28.04.2017
10:08:15
Чот не пойму ничего.
Пользую fileinput от картика.
В форме есть: 'options' => ['enctype' => 'multipart/form-data']
С браузера файлы уходят:
http://dl3.joxi.net/drive/2017/04/28/0017/0874/1139562/62/c3e3d2b9e8.png
А в post их уже нет.
http://dl4.joxi.net/drive/2017/04/28/0017/0874/1139562/62/a2c66c003e.png

Anatoly
28.04.2017
10:17:13
$_FILES

Boris
28.04.2017
10:19:08
Thanks

Vasily
28.04.2017
10:25:43
Что костылим?

Boris
28.04.2017
10:27:04
Файлы, как обычно

Vasily
28.04.2017
10:27:48
А зачем? Есть жи класс специально для этой цели.

Boris
28.04.2017
10:28:05
Что за класс?

Anatoly
28.04.2017
10:28:28
\yii\web\UploadedFile

Boris
28.04.2017
10:28:59
Так я его и пользую
Заступил сильно конечно что не в files, a в post смотрел
Кодить вчера доночи было ошибкой)
подскажите, пожалуйста, как посмотреть какая валидация не отрабатывает?

Google

Boris
28.04.2017
14:08:42
если $model->save(false); то все ок
если $model->save() то просто страница редиректится

Anatoly
28.04.2017
14:09:25

Boris
28.04.2017
14:10:31
thanks
Еще есть небольшой вопрос, подскажите как сделать.
Есть поле iconFile в rules оно required. Если добавляю новую запись, не пускает если за указано изображение и все ок.
Но если я редактирую запись с уже существующим изображением все равно пишет что пустое.
http://dl3.joxi.net/drive/2017/04/28/0017/0874/1139562/62/83f9b25989.png

Anatoly
28.04.2017
14:28:16
Добавь when

Admin
ERROR: S client not available

Anatoly
28.04.2017
14:28:35
Например, 'when' => function ($model) {$model->imageId === null;}

Boris
28.04.2017
14:36:07
['iconFile', 'required', 'when' => function ($model) {
$model->icon === null;
}],
чот не заработало :)

Anatoly
28.04.2017
14:41:09
Сорян, return надо
'when' => function ($model) {return $model->imageId === null;}

Boris
28.04.2017
14:44:36
пробовал и с return, не работает
может быть дело в том что на клиенте изображение грузится в поле iconFile, и потом строка пишется в поле icon
т.е. при редактировании записи поле iconFile пустое и логично отрабатывает required что не дает сохранить
т.е. мне нужно что-то такое:
if ($this->icon === null) {'iconFile' => 'required'}

Artur
29.04.2017
17:35:46
У всех packagist.org лежит?
composer не подтягивает из за этого

SiZE
29.04.2017
17:44:33
работает

Artur
29.04.2017
17:44:58
(

Google

Konstantin
29.04.2017
17:57:12
http://shot.hsdn.org/AoddpdnL
пашет вроде

0x9d8e
29.04.2017
18:00:44
Народ. В текущем проекте очень усложнилась бизнес-логика по заказу/покупке товаров и услуг. Канитель с подписами, всякими баллами, лицевыми счетами и тонной условий.
Думаю запилить класс, который будет всё это в себя включать. Ответственность у него довольно простая: подсчитать реальный итог по заказу (с учётом того, что будет опалчено за счёт всяких баллов, что из лицевого счёта, а что нужно оплатить любым доступным способом) и, может быть, создать платёж (обработкой платежа уже другая тема занимается).
Как бы такую хрень назвать?

Konstantin
29.04.2017
18:52:26
баллы и итог по заказу обязательно в один класс пихать?
может один класс баллы другой не баллы а третий все суммирует и итожит?


0x9d8e
29.04.2017
18:58:08
в смысле "суммирует и итожит"?
Представим себе один из возможных сценариев: что есть заказ услуг на 5000к рублей с доставкой в обе стороны.
Есть юзер с активной подпиской, 2000 на балансе и 1 баллом бесплатной доставки.
Тут мы считаетаем так:
Раз есть подписка, то "бесплатная доставка от 1000" неприменима. Сколько можем доставок баллами оплатить? Одну. Значит 1 балл бесплатных доставок. Вторую платить рублями, скажем 200. Итого 5200. На балансе 2000, значит 2000 с баланса, а 3200 к оплате.
Получается итог:
1 балл бесплатных доставок
2000 с лицевого счёта
3200 оплаты любым доступным способом.
При этом вот этот 1 и 2000 должны списаться только тогда когда 3200 будут оплачены. Значит это атомарный платёж т.е. модель Payements приобретает 3 поля.
Но вышеописанную логику никак нельзя пихать в платёж. В крайнем случае в заказ. И логика эта практически неделимая процедура (на данный момент).
Есть ещё вариант сам платёж усложнить и тогда платёж будет уже не композицией из списка целей платежа и способа оплаты, а композицией двух списков: списко целей платежа и список способов оплаты. Но профита это не даёт на данный момент.
В общем получается что это как-бы к заказу относится. Но уже не совсем. Прослойка между заказом и платежом. Счёт что-ли. Хз.
Ыы. Total.
$total = new Total($order);
$payment = Payment::make($total);
Его и во вьюшку для отчёта передать можно и платёж по нему сгенерить. При этом он должен быть обёрткой над заказом , всего лишь пару методов ему добавляющей.
ток не обёртка а фабрика обёрток :(


Dmitriy
30.04.2017
10:13:13
Вам нужно выносить логику всю в соответствующие сервисы
добавить классы сущностей
и работать или через модели AR или репозитории

Евгений
30.04.2017
13:12:29
В yii2 есть репозитории из коробки?

Dmitriy
30.04.2017
13:13:01
Нет
Да не где в фреймах их нету

Евгений
30.04.2017
13:16:33
Почему? Symfony2 например?

Konstantin
30.04.2017
13:18:14
даже не представляю чо такое репозитории в Yii2

Dmitriy
30.04.2017
13:18:18
Про шаблон репозиторий ?