@yii2ru

Страница 1086 из 1721
☕ CunningFox
24.03.2018
20:54:44
можно в зависимости от контекста прокидывать в модель нужный аттрибут который указывать в валидаторе

объект модели у тебя один

SiZE
24.03.2018
20:54:52
А смысл мне дублировать один и тот же код?
Я не очень понял, что ты собрался дублировать. Но отвечу что ООП в принципе избыточен по определению

☕ CunningFox
24.03.2018
20:55:05
выкинь ифы они не нужны

Google
☕ CunningFox
24.03.2018
20:55:36
['news', 'exist', 'targetClass' => my\best\News::class, 'targetAttribute' => $this->currentAttribute],

Vladimir
24.03.2018
20:56:02
Мне нужно exist проверять не news, а entity_id

Vladimir
24.03.2018
20:56:15
Грубо говоря логика такая

☕ CunningFox
24.03.2018
20:56:20
SiZE
24.03.2018
20:57:24
почему?
Потому что не должно что угодно куда угодно подставляться без проблем

☕ CunningFox
24.03.2018
20:57:28
new Model(['currentAttribute' => 'news']) и public function init() {if ($this->currentAttribute !== 'news') {throw new ...}

Потому что не должно что угодно куда угодно подставляться без проблем
я вообще не понимаю почему аттрибуты разные) видимо косяк со структурой бд

от того и страдания

Vladimir
24.03.2018
20:58:40
Форма комментария вызывается на странице модуля новости у материала id 2. Потом человек отправляет комментарий , он идет AJAX-ом в контроллер site в экшн comment_add Чтобы проверить, что человек не написал на клиенте свои значения module и entity_id в правилах валидации я: проверяю что module IN [news,files и тд] проверяю что у данного модуля есть такая новость, файл и тд с id=entity_id

☕ CunningFox
24.03.2018
20:59:11
извиняюсь, я невнимательно читал этот код

там PK название аттрибута. Всем доброй ночи

Google
Vladimir
24.03.2018
21:00:28
А я кажется нашел в чем баг

Вот в этом правиле

['entity_id','validateEntity','params'=>'module']

'module' не передается как атрибут а передается как строка module

вопрос тогда, как его заставить передавать значение пришедшего в форму module?

Vladimir
24.03.2018
21:03:34
А зачем мне каждому модулю писать add_comment, если все можно через site, в чем смысл тогда использовать виджет

Это же дикая избыточность

А если переписать надо будет контроллер мне все модули переписывать?

SiZE
24.03.2018
21:04:06
Удобно же. Один файл

Vladimir
24.03.2018
21:04:41
Ну в модулях по крайней мере все разное примерно

Konstantin
24.03.2018
21:04:44
А зачем мне каждому модулю писать add_comment, если все можно через site, в чем смысл тогда использовать виджет
Модуль ибо самостоятелен по идее. И не знает что и как в другом контроллере ?

☕ CunningFox
24.03.2018
21:04:46
Есть 100500 способов не дублировать код.

Vladimir
24.03.2018
21:04:58
А он и не знает

Это дело виджета комментов, а не модуля

Вопрос

SiZE
24.03.2018
21:06:35
Ну ты продолжай изобретать)

Google
Vladimir
24.03.2018
21:06:42
Есть ли возможность в етом правиле ['entity_id','validateEntity','params'=>'module'], Передавать module не как строку module, а как атрибут module?

SiZE
24.03.2018
21:06:56
У тебя много времени видимо)

Vladimir
24.03.2018
21:07:15
Ну ты продолжай изобретать)
Ну вообще-то в прошлый раз когда я советовался с челиками из этого чата мы пришли как раз к тому что у меня сейас

Vladimir
24.03.2018
21:07:42
И оно как бы нормально работает с такой логикой и нету одинакового кода

Проще исправить пару ифов в виджете чем редатировать кучу модулей

Konstantin
24.03.2018
21:08:29
Я бы компонентом сделал тогда и на событиях проверял ?

☕ CunningFox
24.03.2018
21:08:29
У тебя модель в виджете?

Что за ,.. стыд? Кто посоветовал модель в виджет пихать?

Vladimir
24.03.2018
21:09:55
Называй его компонентом

Это компонент

Konstantin
24.03.2018
21:10:09
Сайз дело говорит. Нужно айди модуля тогда писать в табу и сравнивать

Vladimir
24.03.2018
21:10:58
В каком смысле?

Konstantin
24.03.2018
21:11:02
Чтобы твои код мог из одного места проверять

Vladimir
24.03.2018
21:11:40
У меня модуль вот так проверяется ['module','in','range'=>['news','files','projects']],

нужно проверить что в этом модуле есть запись)

с id который entity_id

Konstantin
24.03.2018
21:14:17
Нуууу ) эксист вроде проверяет

Vladimir
24.03.2018
21:14:30
Ага

Google
Vladimir
24.03.2018
21:14:51
Только targetClass зависит от модуля

Konstantin
24.03.2018
21:15:13
Херово

Кажется я въехал ?

Но всё равно как-то странно ты сделал. Мне кажется что оно по другому может быть

Я вот понять не могу зачем тебе лезть в таргет класс

У тебя же контроллер один только принимает

Vladimir
24.03.2018
21:21:10
Но всё равно как-то странно ты сделал. Мне кажется что оно по другому может быть
Ну вообще оно все ок работало как я сделал, и я в чатике недавно обсуждал как проверку сделать от недобросовестного клиента

Я вот понять не могу зачем тебе лезть в таргет класс
таргет класс это класс в валидаторе exist

В принципе

Konstantin
24.03.2018
21:22:53
Да. Понял. Он только для ар

Vladimir
24.03.2018
21:24:35
Мой вопрос сейчас сводится к такому, есть переменные module и entity_id можно ли в rules валидации модели ['entity_id','validateEntity','params'=>'module'], вот тут, передавать module как переменную чтобы в $params оно подставило значение $module

☕ CunningFox
24.03.2018
21:25:49
да блин

даже в "этом"

!exist

не то)

Konstantin
24.03.2018
21:26:58
!exist
Он работает только с атрибутами модели Active Record

☕ CunningFox
24.03.2018
21:27:46
Он работает только с атрибутами модели Active Record
да я про кастомный валидатор, там в условиях param = 'sss' & exist() => error

а должен проверять что нет сущности exists() === false

Google
☕ CunningFox
24.03.2018
21:29:24
Он работает только с атрибутами модели Active Record
все равно есть возможность стандартным реализовать, зачем извращение хз.

Vladimir
24.03.2018
21:29:26
То есть !(param='sss'&& exist())=>error

☕ CunningFox
24.03.2018
21:29:29
хочется так хочется)

Konstantin
24.03.2018
21:29:45
в пасте пришли чо там в модели

☕ CunningFox
24.03.2018
21:30:05
нету такой возможности
т.е. все что было выше просто в игнор?)

Vladimir
24.03.2018
21:30:21
☕ CunningFox
24.03.2018
21:30:26
ну ок

Konstantin
24.03.2018
21:30:50
пасту давай модели, ты чо до сих пор не прислал то её

Vladimir
24.03.2018
21:31:02
ща

https://pastebin.com/7Xf6mPM4

Вот пока валидатор такой

вернее такой if (!($params=='news'&&News::find()->where(['id' => $attribute])->exists())){ $this->addError($attribute, Yii::t('common','Неверный материал комментария!')); }

☕ CunningFox
24.03.2018
21:35:48
($this->module === 'news' && >>>!<<< News.....->exists())

Vladimir
24.03.2018
21:36:29
$this->module в правилах валидации?

☕ CunningFox
24.03.2018
21:36:57
в валидаторе

Vladimir
24.03.2018
21:37:30
В валидаторе $attribute, $params

Страница 1086 из 1721