Niko
gud3 поставили исправление к 2.0.15)))
gud3
Niko
http://joxi.ru/gmv1bwoTxMOe6r
Niko
К версии 2.0.15 поправят
gud3
как-то так
ничего себе, сейчас буду проверять видимо я чего-то не знаю ещё)
Good
Есть где-нибуть пример фикстуры для загрузки файлов? Ну то есть, допустим, хочу для тестов картинки подгружать, и удалять, по аналогии с фикстурами, которые наполняют тестовую базу
Evgeniy
Всем привет. Ребят, в модели ProductSearch есть $this->load($params), как понимаю, он загружает данные из адресной строки get параметры, для фильтрации данных. Решил использовать у себя в своём классе, тоже который наследуется от Product. Поставил после $this->load($params) print_r($this), но там своих get параметров не видно( Что не так делаю? Спасибо
first
в контроллере вызове метод модели
Nurik
Всем привет. Дали код. yii2. Всюду страшный ActiveForm. Проблема:
Повесил событие на форму на submit. Но теперь событие отрабатывает 2 раза сперва, а потом дальше по одному. форма одна.
Дмитрий
Дмитрий
Проблем может быть мильён
Niko
Но теперь событие отрабатывает 2 раза сперва, а потом дальше по одному. форма одна.
Я вообще результата не понял. Как это "сперва" и "потом дальше по одному"
Konstantin
та там pjax небось
Evgeniy
Дмитрий
Evgeniy
Дмитрий
почему?
В $params у вас что находится
Дмитрий
Где объявление переменной
Evgeniy
Дмитрий
Дмитрий
Дмитрий
Либо true либо false
Evgeniy
Дмитрий
Вру
Дмитрий
Нужно сначала создать нужную модель, потом загружать в нее данные
Konstantin
$this->load($params), как понимаю, он загружает данные из адресной строки get параметры, для фильтрации данных.
Konstantin
вот это неправильно
Evgeniy
Вру
Да ошибка. Делал как в ProductSearch, который gii сгенерировал
Evgeniy
Konstantin
load загружает не какие-то там get-параметры, а загружает он $params
Konstantin
так надо сперва в этот $params положить нужные вещи
Evgeniy
Konstantin
ну например
Konstantin
ну и что там?
Дмитрий
А случайные данные
Evgeniy
ну и что там?
var_dump($param) возвращает array(1) { ["url"]=> string(16) "turbokompressory" }
Дмитрий
Все ясно
Konstantin
formName()
Дмитрий
load может загружать только данные которые относятся к модели
Evgeniy
Konstantin
скорее он "предназначен"
Konstantin
сделай строку не ?url=turbokompressory, а Products[url]=turbokompressory
Konstantin
наверняка все заработает
Дмитрий
Konstantin
ну или наоборот, в классе ProductFilter объяви метод formName() и верни в нем пустую строку
Konstantin
это все исходя из предположения, что у Products есть атрибут $url
Konstantin
хотя вообще именовать модели во множественном числе - фу
Дмитрий
Konstantin
почему плохому?
Konstantin
ну мало ли, может надо более-менее чистенькую строку запроса иметь
Konstantin
читаемую человеком
Konstantin
а потому что в этом коде и ссылки тоже формируются с учетом formName
Konstantin
а ты свой 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
Dmytro 🇺🇦
А валидаторы не забыл?
Dmytro 🇺🇦
Вот тебе и 2 раза