Egor
Подскажите, пожалуйста
Egor
Пытаюсь сделать PJAX обновление gridview, с поисковой формой
Egor
https://pastebin.com/vMaWb4ba
Egor
Только без гет параметров в адресной строке
Egor
Гетом без пуш стэйтов почему-то дублируются переменные
Egor
То есть не так
Niko
хочешь без гет - отправляй пост ajax и отрисовуй заново thead и tbody. Просто я в pjax не очень шарю. Многие говорят, что лучше без него
Borys
на кой pjax то?)
Egor
При pjax'e формы параметры нормальные, а при pjax'e grid'a дефолтные
Egor
Ну, говорят время позволяет сэкономить))
Egor
Если разобраться
Egor
Может кто сталкивался уже)
Niko
не
Borys
pjax это же грубо говоря кнопочка назад, не? а в yii2 уже в него пхнули динамику - зойчем?
Niko
@ensDev Pjax в 2.1 должны вырезать. Не используй его
Egor
Ого, спасибо
Niko
@ensDev его должны оставить как отдельное расширение. Но я не думаю, что он будет как-то развиваться
Stas
а ну может кто подскажет: есть массив (возможно с известным числом элементов) надо его перебрать и на каждой итерации каждый новый элемент ложить в определенную переменную
Roman
что такое каждый новый?
Stas
в массиве пока 9 элементов при переборе массива надо 1 элемент положить в $first 2 в $two и т.д.
👻
list($first,$second)=$array;
👻
По-моему так
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
По-моему так
А если их сто?
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
Зачем все усложнять?
👻
Человек сказал 9
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
Лист из 9 уже бред
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
Использовать индексы, или все же идти к ООП
Юрий
да и вообще полагаться на list не надо
Юрий
с такими-то правками вроде этой: В PHP 5 list() присваивает значения начиная с самого правого. В PHP 7 list() - с самого левого.
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
да и вообще полагаться на list не надо
И не нужна, есть классы для этого
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
Структурировать и не страдать
👻
Если надо распарить цсв вполне то и тянуть дофига абстракций смысла нет
👻
Структурировать можно и нужно но не всегда в этом есть необходимость
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
Вся эта "фигня" интерфейсы, абстракции не просто так придумали)
Niko
возможно есть более четкая задача, чем класть элемент массива в переменную? Тогда будет проще найти более нормальное решение
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
И паттерны нужны не только для собеседования 😄
Niko
@HunterKaan тогда в чем отличие билдера от фабрики?
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
Фабрика
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
Билдер
Niko
Так сразу все понятно. Все верно!)))
Niko
@ASYOU99 сделай ключи именами переменных и передавай их как переменную меременной в foreach foreach ($arr as $key => $val) { $$key = $val } Вообще лучше задачу конкретней описать, а то не понятно что с ними потом делать Всем пока
Evgeniy
Ребят, всем доброго утра. Подскажите пожалуйста. в girdview сортировка работает странно по времени. Правда колонку где время я изменил, чтобы было "Сегодня", "Завтра", "134 дней" и т.д. а как сделать чтобы сортировка была по времени из БД? Спасибо
mr.
В настройках колонки.
Evgeniy
`` [ 'attribute' => 'date_call', 'label'=>'Дата последнего звонка', 'value' => function () { $model = func_get_arg(0); //var_dump($model->getTalks()->select(['date'])->orderBy(['id'=>SORT_DESC])->asArray()->one()); $par = $model->getTalks()->select(['date'])->orderBy(['id'=>SORT_DESC])->asArray()->one(); if($par['date']==null){ $par['date'] = $model->date_call; } $day = round((time() - $par['date']) / (60 * 60 * 24)); $count_day = substr($day, -1); if ($count_day == '1') { $str_day = 'День назад'; } elseif ($count_day >= '2' and $count_day <= '4') { $str_day = 'Дня назад'; } elseif($count_day>='5' and $count_day<='9') { $str_day = 'Дней назад'; } elseif($count_day=='0'){ $day = ''; $str_day = 'Сегодня'; } return $day.' '.$str_day; } ],``
mr.
И хочешь сказать, что сортирует по форматированному значению О_о?
Niko
@zheev да поможет тебе DateRangePicker
mr.
`` [ 'attribute' => 'date_call', 'label'=>'Дата последнего звонка', 'value' => function () { $model = func_get_arg(0); //var_dump($model->getTalks()->select(['date'])->orderBy(['id'=>SORT_DESC])->asArray()->one()); $par = $model->getTalks()->select(['date'])->orderBy(['id'=>SORT_DESC])->asArray()->one(); if($par['date']==null){ $par['date'] = $model->date_call; } $day = round((time() - $par['date']) / (60 * 60 * 24)); $count_day = substr($day, -1); if ($count_day == '1') { $str_day = 'День назад'; } elseif ($count_day >= '2' and $count_day <= '4') { $str_day = 'Дня назад'; } elseif($count_day>='5' and $count_day<='9') { $str_day = 'Дней назад'; } elseif($count_day=='0'){ $day = ''; $str_day = 'Сегодня'; } return $day.' '.$str_day; } ],``
Глунул код, пустил сезу... $model = func_get_arg(0) можно же просто было в анонимной функции первый аргумент указать как $model без этой дичи $par = $model->getTalks()->select(['date'])->orderBy(['id'=>SORT_DESC])->asArray()->one(); запросы в отображение - самый лютый зашквар, можно было нормально по человечью связи подтянуть через with на этапе подготовки запроса. Далее все твои вычисления вероятно не верно форматируют, проверить можешь просто, рядом выведи сырую дату и увидишь, что с сортировкой всё в порядке.
SiZE
Я столько раз наблюдал, как народ попадает с такими тестовыми данными и потом очко горит, что могу лишь дать совет не писать так :)
mr.
спасибо попробую
Попробуй лучше использовать Yii::$app->formatter->asRelativeTime http://www.yiiframework.com/doc-2.0/yii-i18n-formatter.html#asRelativeTime()-detail предварительно локаль задай
Evgeniy
Понял в чём косяк. Сортирует по данным из одной таблицы, а надо по дате из связанной таблиы
Dmitry
Подскажите, как лучше организовать выборку нескольких моделей в один массив, чтобы можно было сортировать, фильтровать. Может есть какое удобное решение, кроме как свое писать?
mr.
а with юзать в модели?
В запросе который для ActiveDataProvider подготавливаешь, в контроллере, либо в *Search модели, в зависимости как там у тебя реализовано.
mr.
Evgeniy
Задавай свойство attribute на то, по которому нужно сортировать.
`$dataProvider->setSort([ 'attributes' => [ 'id', 'date' => [ 'asc' => ['talks.date' => SORT_ASC], 'desc' => ['talks.date' => SORT_DESC], 'label' => 'Последний звонок', 'default' => SORT_ASC ] ] ] );`
mr.
Подскажите, как лучше организовать выборку нескольких моделей в один массив, чтобы можно было сортировать, фильтровать. Может есть какое удобное решение, кроме как свое писать?
Стоит потратить время и всё же прочитать Guide, тем более он есть на русском языке. Вкратце, используйте дата провайдеры, сёрч модели. Дата провайдер отвечает за сортировку, данные выбираются через эктив квери.
Evgeniy
Хорошо, спасибо.Буду пытаться
mr.
Хорошо, спасибо.Буду пытаться
https://www.youtube.com/watch?v=ZXsQAXx_ao0
Evgeniy
К примеру, Trying to get property of non-object код: $query->joinWith(['date' => function ($q) { $q->where('talks.date LIKE "%' . $this->date . '%"'); }]);
The Ant
yii'сты вопрос по сортировке. Если в модели нужна сортировка для запроса, как вы ее заводите в эту модель? В контроллере класс создаете или в самой моделе?