Niko
gud3 поставили исправление к 2.0.15)))
Niko
http://joxi.ru/gmv1bwoTxMOe6r
Niko
К версии 2.0.15 поправят
gud3
как-то так
ничего себе, сейчас буду проверять видимо я чего-то не знаю ещё)
gud3
как-то так
спасибо за разъяснение
Good
Есть где-нибуть пример фикстуры для загрузки файлов? Ну то есть, допустим, хочу для тестов картинки подгружать, и удалять, по аналогии с фикстурами, которые наполняют тестовую базу
Ivan
Есть где-нибуть пример фикстуры для загрузки файлов? Ну то есть, допустим, хочу для тестов картинки подгружать, и удалять, по аналогии с фикстурами, которые наполняют тестовую базу
Что именно ты имеешь ввиду подгружать картинку? Чтобы она была в массиве $_FILES вот так можно $I->attachFile('input[id="signupform-photo"]', 'photo.jpg'); а по окончанию скрипта картинка сама удалиться из временного хранилища, а вот если ты её сохранишь где-то, то уже ничего само оттуда не удалит.
Evgeniy
Всем привет. Ребят, в модели ProductSearch есть $this->load($params), как понимаю, он загружает данные из адресной строки get параметры, для фильтрации данных. Решил использовать у себя в своём классе, тоже который наследуется от Product. Поставил после $this->load($params) print_r($this), но там своих get параметров не видно( Что не так делаю? Спасибо
first
в контроллере вызове метод модели
Evgeniy
в контроллере вызове метод модели
$productFilter = new ProductFilter(); return $productFilter->filter(Yii::$app->request->queryParams);
Nurik
Всем привет. Дали код. yii2. Всюду страшный ActiveForm. Проблема: Повесил событие на форму на submit. Но теперь событие отрабатывает 2 раза сперва, а потом дальше по одному. форма одна.
Дмитрий
Проблем может быть мильён
Evgeniy
Проблем может быть мильён
а мне случайно не поможете?)) пожалуйста)
Niko
Но теперь событие отрабатывает 2 раза сперва, а потом дальше по одному. форма одна. Я вообще результата не понял. Как это "сперва" и "потом дальше по одному"
Konstantin
та там pjax небось
Evgeniy
та там pjax небось
Здравствуйте))
Дмитрий
почему?
В $params у вас что находится
Дмитрий
Где объявление переменной
Evgeniy
В $params у вас что находится
массив с гет-параметрами. Объявляется В контроллере
Evgeniy
Где объявление переменной
и передаётся в модель
Дмитрий
массив с гет-параметрами. Объявляется В контроллере
Я вам не верю. Показывайте код где передается
Evgeniy
Я вам не верю. Показывайте код где передается
https://gist.github.com/avasites/b4ed0a2070f5e75d3cbb03c12bf65acd
Дмитрий
https://gist.github.com/avasites/b4ed0a2070f5e75d3cbb03c12bf65acd
Кхм. А вы вкурсе что возвращает функция load?
Evgeniy
Кхм. А вы вкурсе что возвращает функция load?
Она как бы загружает эти данные сейчас она возвращает false
Дмитрий
Либо true либо false
Evgeniy
Либо true либо false
Но сейчас false
Дмитрий
Но сейчас false
В вашем случае должен быть $q->load
Дмитрий
Вру
Дмитрий
Нужно сначала создать нужную модель, потом загружать в нее данные
Konstantin
$this->load($params), как понимаю, он загружает данные из адресной строки get параметры, для фильтрации данных.
Konstantin
вот это неправильно
Evgeniy
Вру
Да ошибка. Делал как в ProductSearch, который gii сгенерировал
Konstantin
load загружает не какие-то там get-параметры, а загружает он $params
Konstantin
так надо сперва в этот $params положить нужные вещи
Konstantin
ну например
Konstantin
ну и что там?
Дмитрий
Yii::$app->request->queryParams
Дружище. У меня закралось подозрение что в get ты кладешь не модель
Дмитрий
А случайные данные
Evgeniy
ну и что там?
var_dump($param) возвращает array(1) { ["url"]=> string(16) "turbokompressory" }
Дмитрий
Все ясно
Konstantin
formName()
Evgeniy
А случайные данные
а почему же в ProductSearch работает так?
Дмитрий
load может загружать только данные которые относятся к модели
Konstantin
скорее он "предназначен"
Konstantin
сделай строку не ?url=turbokompressory, а Products[url]=turbokompressory
Konstantin
наверняка все заработает
Konstantin
ну или наоборот, в классе ProductFilter объяви метод formName() и верни в нем пустую строку
Konstantin
это все исходя из предположения, что у Products есть атрибут $url
Konstantin
хотя вообще именовать модели во множественном числе - фу
Konstantin
почему плохому?
Konstantin
ну мало ли, может надо более-менее чистенькую строку запроса иметь
Konstantin
читаемую человеком
Evgeniy
сделай строку не ?url=turbokompressory, а Products[url]=turbokompressory
А как же тогда всё работает в сгенерированом gii коде? Там же ничего не переделывается
Konstantin
а потому что в этом коде и ссылки тоже формируются с учетом formName
Konstantin
а ты свой url наверняка где-то намертво прописал
Evgeniy
а ты свой url наверняка где-то намертво прописал
Да вижу теперь, что не так) спасибо)) буду дальше пытаться))
Konstantin
когда gii сгенерировал форму, он там написал $form->field('url', $model)->...
Konstantin
и виджет ActiveField заглянул в $model, посмотрел, какой в нем formName() и добавил его к полям
Konstantin
это делается на случай, если у тебя на странице будет две разных формы с одинаковыми атрибутами
Konstantin
чтобы можно было их отличить
Дмитрий
А load один
Evgeniy
Спасибо Вам))) http://z-s-t.loc/category/test?ProductFilter[url]=turbokompressory так сработало))
Good
Вообще, если говорить о load(), так там все просто. В нее передается массив, в котором есть ключи типа ModelName[attributeName]. Такие ключи, например, автоматически формируются виджетом форм. Если ModelName совпадает с названием класса модели, в которой вызывается метод load(), и модель имеет соответствующие ключи, то атрибуты заполняются соответствующими значениями. Также, эти аттрибуты должны быть безопастными, чтоб нельзя было просто запросом заполнить, например, поле пароля. или еще что-то такое. То есть, это просто для удобства. А сам массив может бытьоткуда угодно, в большинстве случаем это чтото-типа Yii::$app->request->post()
Good
http://www.yiiframework.com/doc-2.0/yii-base-model.html#load()-detail
Good
То есть, выглядит где-то так (в случае новой записи): $model = new User(); $model->load(Yii::$app->request->post()); После этого в модель будет заполнена данными из формы, после чего ее можно сохранить, например.
Nurik
Проблем может быть мильён
В общем так. Берем голую установку yii2 basic. Создаём форму с помощью activeform. Всё. Вешаем скрипт, в котором: $('form').on('submit',function(){ // Всё что в теле — повторяется 2 раза.}) Проблема, что обработчик выполняется 2 раза. Никаких pjax и так далее. Всё стандартное.
Nurik
Зачем вешать on submit?
Затем, что надо.
Dmytro 🇺🇦
А валидаторы не забыл?
Dmytro 🇺🇦
Вот тебе и 2 раза