☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
new Model(['currentAttribute' => 'news']) и public function init() {if ($this->currentAttribute !== 'news') {throw new ...}
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
Потому что не должно что угодно куда угодно подставляться без проблем
я вообще не понимаю почему аттрибуты разные) видимо косяк со структурой бд
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
от того и страдания
Vladimir
Форма комментария вызывается на странице модуля новости у материала id 2. Потом человек отправляет комментарий , он идет AJAX-ом в контроллер site в экшн comment_add Чтобы проверить, что человек не написал на клиенте свои значения module и entity_id в правилах валидации я: проверяю что module IN [news,files и тд] проверяю что у данного модуля есть такая новость, файл и тд с id=entity_id
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
извиняюсь, я невнимательно читал этот код
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
там PK название аттрибута. Всем доброй ночи
Vladimir
А я кажется нашел в чем баг
Vladimir
Вот в этом правиле
Vladimir
['entity_id','validateEntity','params'=>'module']
Vladimir
'module' не передается как атрибут а передается как строка module
Vladimir
вопрос тогда, как его заставить передавать значение пришедшего в форму module?
SiZE
У каждого модуля свой add_comment и никакого говна с избытком проверок
Vladimir
А зачем мне каждому модулю писать add_comment, если все можно через site, в чем смысл тогда использовать виджет
Vladimir
Это же дикая избыточность
Vladimir
А если переписать надо будет контроллер мне все модули переписывать?
SiZE
Удобно же. Один файл
Vladimir
Ну в модулях по крайней мере все разное примерно
who are you
А зачем мне каждому модулю писать add_comment, если все можно через site, в чем смысл тогда использовать виджет
Модуль ибо самостоятелен по идее. И не знает что и как в другом контроллере 🤔
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
Есть 100500 способов не дублировать код.
Vladimir
А он и не знает
Vladimir
Это дело виджета комментов, а не модуля
Vladimir
Вопрос
SiZE
Ну ты продолжай изобретать)
Vladimir
Есть ли возможность в етом правиле ['entity_id','validateEntity','params'=>'module'], Передавать module не как строку module, а как атрибут module?
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
SiZE
У тебя много времени видимо)
Vladimir
Ну ты продолжай изобретать)
Ну вообще-то в прошлый раз когда я советовался с челиками из этого чата мы пришли как раз к тому что у меня сейас
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
У тебя много времени видимо)
Бывает, впереди ещё воскресенье)
Vladimir
И оно как бы нормально работает с такой логикой и нету одинакового кода
Vladimir
Проще исправить пару ифов в виджете чем редатировать кучу модулей
who are you
Я бы компонентом сделал тогда и на событиях проверял 😐
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
У тебя модель в виджете?
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
Что за ,.. стыд? Кто посоветовал модель в виджет пихать?
Vladimir
Называй его компонентом
Vladimir
Это компонент
who are you
Сайз дело говорит. Нужно айди модуля тогда писать в табу и сравнивать
Vladimir
В каком смысле?
who are you
Чтобы твои код мог из одного места проверять
Vladimir
У меня модуль вот так проверяется ['module','in','range'=>['news','files','projects']],
Vladimir
нужно проверить что в этом модуле есть запись)
Vladimir
с id который entity_id
who are you
Нуууу ) эксист вроде проверяет
Vladimir
Ага
Vladimir
Только targetClass зависит от модуля
who are you
Херово
who are you
Кажется я въехал 😄
who are you
Но всё равно как-то странно ты сделал. Мне кажется что оно по другому может быть
who are you
Я вот понять не могу зачем тебе лезть в таргет класс
who are you
У тебя же контроллер один только принимает
Vladimir
Но всё равно как-то странно ты сделал. Мне кажется что оно по другому может быть
Ну вообще оно все ок работало как я сделал, и я в чатике недавно обсуждал как проверку сделать от недобросовестного клиента
Vladimir
Я вот понять не могу зачем тебе лезть в таргет класс
таргет класс это класс в валидаторе exist
Vladimir
В принципе
who are you
Да. Понял. Он только для ар
Vladimir
Мой вопрос сейчас сводится к такому, есть переменные module и entity_id можно ли в rules валидации модели ['entity_id','validateEntity','params'=>'module'], вот тут, передавать module как переменную чтобы в $params оно подставило значение $module
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
да блин
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
даже в "этом"
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
!exist
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
не то)
who are you
!exist
Он работает только с атрибутами модели Active Record
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
Он работает только с атрибутами модели Active Record
да я про кастомный валидатор, там в условиях param = 'sss' & exist() => error
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
а должен проверять что нет сущности exists() === false
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
Он работает только с атрибутами модели Active Record
все равно есть возможность стандартным реализовать, зачем извращение хз.
Vladimir
То есть !(param='sss'&& exist())=>error
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
хочется так хочется)
who are you
в пасте пришли чо там в модели
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
нету такой возможности
т.е. все что было выше просто в игнор?)
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
ну ок
who are you
пасту давай модели, ты чо до сих пор не прислал то её
Vladimir
ща
Vladimir
https://pastebin.com/7Xf6mPM4
Vladimir
Вот пока валидатор такой
Vladimir
вернее такой if (!($params=='news'&&News::find()->where(['id' => $attribute])->exists())){ $this->addError($attribute, Yii::t('common','Неверный материал комментария!')); }