Good
Попробуй $validators = $this->owner->getValidators(); $validators->append(Validator::createValidator($validator, $this->owner, (array) $attributes, $options));
Тут бред какой-то. В методе attach() когда добавляю таким образом валидаторы, все норм, но в контроллере сразу после создания новой модели, у нее уже нету этих валидаторов, только те, которые в коде модели. Хотя должны быть, аттач же работает при создании модели
SiZE
В init поведения это надо делать
SiZE
а лучше beforeValidate(), но надо проверку что один раз уже закинул правила
Good
Хм. Да? Интересно, почему?
Good
Вот тут рекоммендуют в аттач
Good
https://github.com/yiisoft/yii2/issues/5438
SiZE
https://github.com/yiisoft/yii2/issues/5438
Я там вижу только вопрос "как думаете этот говнокод покатит?"
Good
Там есть в ответах
SiZE
есть событие beforeValidate по сути раньше не надо тебе ниче
Good
https://github.com/yiisoft/yii2/issues/5438#issuecomment-58452701
Good
Ну да, но тогда действительно нужно проверять, не очень красиво
Good
Так а почему в аттач нельзя? ЛОгично же, после того как овнер приаттачили, делять что-нибуть с ним
Good
МОжет не понимаю чего. В любом случае, после аттач они пропадают, хотя не должны
SiZE
делаешь свойство private $validatorsAttached = false; при событие проверяешь if (!$this->validatorsAttached) {/* attach validators */ $this->validatorsAttached = true;}
SiZE
делов на три копейки
Good
КОнечно, но, тем не менее, хотелось бы разобраться, почему не работает так
SiZE
КОнечно, но, тем не менее, хотелось бы разобраться, почему не работает так
Тогда разберись в каком случае вызывается attach у поведения
Denis
Denis
Вот здесь model используется как то неявно? Как понять, что нужно а что нет?
SiZE
Вот здесь model используется как то неявно? Как понять, что нужно а что нет?
$key видимо используется, а он идет вторым аргументом, т.е. без $model не получить
Denis
При этом нигде далее не используется, но без него не работает
Good
Тогда разберись в каком случае вызывается attach у поведения
Ну я так понял. в момент присоединения к компоненту. Вроде ж то, что надо, разве не так? вызываю parent::attach($owner);, потом присоединяю валидаторы уже к овнеру. Логично же. Но не работает
Максим
При этом нигде далее не используется, но без него не работает
обязательный параметр для анонимной функции
SiZE
открой Component и разбери устройство класса :)
Good
открой Component и разбери устройство класса :)
Не разобрался короче) Так когда аттач вызывается? В любом случае через init никак, в нем нету еще овнера
Good
А через beforeValidate тоже не подходит, так как мне нужно сделать пару аттрибутов безопастными, а $model->load() не производит валидации.
Good
Короче, я хз, что делать
Denis
А как можно прицепить ассеты из разных папок? То есть мне надо ещё свой стиль прицепить к шаблону, а там уже есть прицпленный вот так
Denis
Good
Так второй ассетбандл сделай, или тот, что есть, отредактируй
Denis
Тот ; что есть -это пакетный в вендоре
Denis
А сделать свой-это скипровать в смысле ?
Denis
Denis
Кэш сломал?
Denis
Всего то хотел выводить кликаьельные ссылки на email
Good
Права не выставлены на рантайм
Good
Рекурсивно поставь 777
Good
на весь рантайм
Good
А сделать свой-это скипровать в смысле ?
В смыслы создать свой ассетбандл с теми файлами, которые нужно добавить, и зарегистрируй после того в лейауте
Denis
Ну ок. Сделаю
Denis
Права не выставлены на рантайм
А оно сразу не могло что ли? Там же init что то отрабатывает
Denis
В смысле скрпит
Denis
Где chmod выполняется
Good
А хз, но не выставлено) Мало ли, может та папка какк-то не так сотворилась
Denis
Так второй ассетбандл сделай, или тот, что есть, отредактируй
Так. Второй не проблема. Его второй переменной привязать или как ?
Good
В смысле? Просто в лейауте зарегистрируй его так же, как основной
Good
После него, например
Denis
Не своем тебя понял. Но мне пора уже)
Good
Ну блин
Good
Так тчо не понятного
Good
что
Good
Так же, как основной ассетбандл в лейауте
Good
Можно после него на следующей строчке
Good
свой ассетбандл зарегистрируй
Good
Аналогично
Good
ЧТо не понятного-то)
Denis
Что вот первый привязан к переменной $bundle И она там вроде нигде не используется. Кода под рукой нет
Good
Да наплюй на первый, тебе ж свой нужно зарегистрировать. Я не понимаю, в чом завтык
Evgenii
Всем привет! Есть задача обращаться к экшену как к js скрипту. Прописав роут ['pattern' => 'script', 'route' => 'site/script', 'suffix' => '.js'], я подключаю во вьюхе скрипт <script src="http://mysite.ru/script.js">. По роуту site/script я пишу в файл дату каждого обращения к скрипту. Но печаль в том, что при каждом обновлении страницы дата записывается 2 раза т.е. происходит 2 обращения к скрипту. А нужно только 1. Чисто из любопытсва сделал аналогичною ситуацию использовав вместо <script> тег <img>. Например так: <img src="http://mysite.ru/script.png">. Тут обращение к скрипту происходит строго 1 раз. Может кто знает почему <script> может себя так вести?
Good
Наверное браузер проверяет, есть ли такой скрипт, а потом уже загружает
Good
Или какк-то так
Good
Дебаггером посмотри, точно два раза экшн вызывается?
Denis
Да наплюй на первый, тебе ж свой нужно зарегистрировать. Я не понимаю, в чом завтык
Допустим, в том пакете что то обновилось. Ну вернее косяк в верстке плюс новые плюхи появились. И все на его ассете. А мне нужно то всего пртцпеть своих пять правил и ради этого на основе первого делать свой, а после обновления опять ковырять. Ну не об этом я мечтаю) не об этом)
Good
Ну а как, хочешь, чтоб твои правила сами автоматически поправились, когда там что-нибуть поменяется?
Good
Я просто не совсем понимаю, как такое возможно сделать вообще)
NVlad
Сделай свой собственный ассет
NVlad
и зарегистрируй его
Good
Ничего не надо на основе перовго делать, просто свои првила в отдельный ассетбандл запихни, и все.
NVlad
в одной странице может присутсвовать несколько ассетов
NVlad
https://github.com/yiisoft/yii2/blob/master/docs/guide-ru/structure-assets.md
Evgenii
Дебаггером посмотри, точно два раза экшн вызывается?
Смотрел в панели разработчика вкладку network, там одно обращение в script.js, но экшен отрабатывает точно 2 раза ибо там file_put_contents() пишет дату. Она записывается 2 раза с разницей в несколько секунд
Evgenii
то ли это осбенность yii, я не могу понять
Good
В экшне точку остановки поставь, и посмотри, скольок раз отрабатывает
Good
На всякий случай
Evgenii
"точку остановки"? не совсем понял о чем вы
Evgenii
речь идет о каком-то дебагере?
Good
ну да