
Antony
29.09.2016
11:43:30
Т.е. я правильно понимаю что без указания сценария в rules будет применятся в любом случае?
Тогда не понятно зачем вообще переопределять scenarios.

Anatoly
29.09.2016
11:46:24
Да, правильно. Здесь есть 2 варианта решения. Иногда форма имеет настольно много полей / сценарием, что наглядней будет записать их в другом виде - переопределить scenarios и убрать on из rules. Гибко, но не с первого раза въезжаешь

Antony
29.09.2016
11:55:57
Т.е. scenarios я должен указать только уникальые поля для этого сценария, для других сценариев в этом случае оно не будет применятся, а поля которые не заданы в scenarios будут выполнятся в любом случае (как SCENARIO_DEFAULT)?
На примере
public function scenarios()
{
return [
self::SCENARIO_GUEST => ['email','username'],
self::SCENARIO_AUTH => ['user_id'],
];
}
public function rules()
{
return [
[ ['message','email','username'], 'required'],
[ ['message','email','username'], 'string'],
[ ['user_id'], 'integer']
];
}
Я все верно понял?

Anatoly
29.09.2016
11:56:15
В данном случае - да

Google

Anatoly
29.09.2016
11:56:41
Ой, стоп
Поля, которых нет в scenarios будут unsafe
То есть ты либо указываешь 'on' у валидатора, либо пишешь метод scenarios и указываешь в каких сценариях какие поля являются safe
Надеюсь, понятно объяснил

Antony
29.09.2016
11:58:55
Т.е. поля по умолчанию которые должны выполнятся во всех сценариях я могу либо дублировать в scenarios, либо в rules пишу on все сценарии?

Anatoly
29.09.2016
11:59:04
Да, так

Antony
29.09.2016
12:01:01
Окей, спасибо разобрался)
Было бы неплохо вместе с системным сценарием SCENARIO_DEFAULT тогда иметь еще SCENARIO_ALL тогда)
Но в принципе можно в rules поместить в переменную все доступные сценарии.

Anatoly
29.09.2016
12:01:38
Можно унаследовать результат родительского scenarios, тогда default будет работать

Antony
29.09.2016
12:02:29
мерджить с parent::scenarios()?

Anatoly
29.09.2016
12:04:23
Ага

Antony
29.09.2016
12:09:16
и еще вопрос:
если у меня есть ссылка на другую таблицу (к примеру email_id), но в форме нужно передать сам email, я планирую при beforeSave выдернуть или добавить email в другую таблицу, вернуть id в модель. Это нормально или можно как-то лучше реализовать?
Таблица с емейлами выглядит примерно так:
id | email
Нужно, ибо в проекте много где емейлы используются, поэтому было решено вынести в отдельную таблицу.

Степан
30.09.2016
16:51:13
всем привет, есть вопрос, у меня есть метод, который вызывается в лейауте, чтобы проверить добывает ли сейчас перс ресурсы. Если добывает, значит $stay_time > 0 и срабатывает if. так вот потом, когда срабатывает else, получается что он срабатывать начинает постоянно и постоянно записывает в ресурсы данные. Как сделать чтобы else сработал например только 1 раз?
короче с каждым обновлением страницы у меня пишет "Вы закончили работать и получили ...." =)

Google

Ilya
30.09.2016
17:40:55
Никто не сталкивался, как получить дату ближайшего вторника?
Или даты трех ближайших вторников?
Можно такое реализовать без мудохонья с написанием самописных модулей?
в strtotime вроде только ближайший вторник можно получить, а вот второй ближайший вторник, вроде как нельзя

SiZE
30.09.2016
18:25:33
Или в рнр?

Borisov
30.09.2016
18:27:18
А второй ближайший вторник прибавь к первому интервал неделя или семь дней

SiZE
30.09.2016
18:27:29

Ilya
30.09.2016
18:29:12
Thanks
Фак, спасибо
))
Уже решил проблему)
Этим же способом)
Хотя не совсем, с помощью strtotime
Удобная вещь оказалась)

Степан
01.10.2016
05:17:52
то есть токен хранить в бд?

SiZE
01.10.2016
07:13:08
Можно и в сессии и чистить если действие выполнено

Р2
01.10.2016
07:37:45
Привет!
а может кто-то подсказать по доктрин мигрейшнс?

Google

Р2
01.10.2016
07:38:16
Дано: symfony и doctrine migrations
Проблема: миграции бд бывают тяжелыми и бывает, что код уже выкатился, а миграция ещё не накатилась, в результате чего код работает с ошибками.
Теоретически надо заставить код при деплое уметь работать с бд до миграции и после - с двумя версиями схемы бд.
Надо: понять тру-вей с т.з. symfony и doctrine migrations для реализации такого решения проблемы. Или возможно есть иные подходы "к снаряду".

Степан
01.10.2016
07:38:22
а в сессии можно подменить же? сделал через бд

Ilya
01.10.2016
11:25:51
Никто не подскажет, как получить данные зависимости?
Если по -> отдает только аттрибут этого объекта.
Хотя в оф документации сказано, что по ->name должен отдавать зависимость

Dmitry
01.10.2016
11:32:29
Надо связь чтобы была
getProduct
Item->product
Если ты про это
В доках есть примеры

Ilya
01.10.2016
11:40:07
Так связь есть, в print_r показывает все, что я указал в ->with()->, но при попытке обращения к нужному аттрибуту я получаю лишь index зависимости, а не саму зависимость
А если использовать asArray, то все работает

Дмитрий
01.10.2016
11:40:57
Илья, покажите код )

Ilya
01.10.2016
11:41:00
А мне нужно не превращая объект в массив получить зависимости
https://jsfiddle.net/zznda0xx/
Или выход - только использовать toArray?

Дмитрий
01.10.2016
11:44:13
а getCourse() как выглядит?

Ilya
01.10.2016
11:44:31
public function getCourse()
{
return $this->hasOne(Courses::className(), ['index' => 'course']);
}
Так в asArray он все выводит как надо, показывает содержимое курса, а не индекс

Дмитрий
01.10.2016
11:47:15
у вас поле с id связи тоже называется course?

Ilya
01.10.2016
11:47:40
Да

Google

Дмитрий
01.10.2016
11:47:50
измените название связи
и обращайтесь к ней по этому новому имени
не надо их одинаково называть

Ilya
01.10.2016
11:48:40
Так, вроде, удобнее)
Пока не работаешь, как с объектом
эх
Понял, спасибо)

Дмитрий
01.10.2016
11:49:54
Обычно поле называется с суффиксом Id - courseId
а связь уже course

Ilya
01.10.2016
11:50:35
В начале так и делал, но потом все переписал без суффиксов)
Показалось, что так будет удобнее работать
Да и в принципе удобнее, пока не сталкиваешься с объектами
Хотя и не правильно)

SiZE
03.10.2016
05:01:23
Нифига не удобнее. =)

Dmitry
03.10.2016
06:16:47
+

RoboSpectrum
06.10.2016
18:24:31
Привет, народ
ну помгайте
нужно чтобы я из админки заливал svg картинки, а в фронтенде они были доступны
тоже самое касается некоторых js файлов
попробовал засунуть appsets файл в common и переместить все туда, везде ошибки
кто спасет меня? гугл не хочет спасать

Google

RoboSpectrum
06.10.2016
18:26:34
где правильно хранить общие css, js и как их правильно подключить?
я уже обрадовался помощи
но "соплектакции" тоже весело конечно

Виталий
06.10.2016
18:31:04

Ivan Po
06.10.2016
18:31:08
Во фронте храни, норм будет

RoboSpectrum
06.10.2016
18:31:21
да, админка -это backend
отдельный vhost
во фронте хранить, ок, как юзать из бэка?

Ivan Po
06.10.2016
18:31:56
В бд засунь

Виталий
06.10.2016
18:31:58
По http
frontend/web/files - сюда сохраняй

RoboSpectrum
06.10.2016
18:32:24
в бд оно уже есть, нет доступа из сайта к изображению

Виталий
06.10.2016
18:32:25
через http подключай
Если Docker, можно использовать Volumes

RoboSpectrum
06.10.2016
18:34:17
насколько я понимаю нужно сделать appAsset файл в бекенде с параметром $basePath = '@frontend/web' на фронтенд, как только так сделал, ошибки пропали связанные с js пропали, но как быть с svg файлами, которые лежат в @frontend/web/svg