@yii2ru

Страница 1644 из 1721
Alexandr
24.09.2018
06:37:31
да

с 5 версии

SiZE
24.09.2018
07:04:36
А ты что хотел, в любом языке, тем более проектах есть служебные переменные, и не зря говорят что лучше не использовать их :)
Ну тут удобство коротких ns просто, например: backend\user\services\Create вместо backend\user\services\UserCreateService

Google
breakt1mus
24.09.2018
07:07:04
Проще "переобозвать" нежели потом мучаться, но на вкус и цвет все фломастеры разные)

Eugene
24.09.2018
07:08:18
ребята, подскажите пожалуйста, как индексы убрать у массива? У меня есть массив вида array(12) { [0]=> array(1) { ["Без имени"]=> array(2) { ["name"]=> string(17) "Без имени" ["data"]=> int(1537432808) } } Я хочу чтобы он был вида array(12) { ["Без имени"]=> array(2) { ["name"]=> string(17) "Без имени" ["data"]=> int(1537432808) } как этого достичь можно?

Andrey
24.09.2018
07:08:48
indexBy('name')

не подойдет?

Eugene
24.09.2018
07:09:35
не подойдет?
мне не на уровне выборки их убрать нужно)

Alexandr
24.09.2018
07:10:40
кто может подсказать по dataProvider. Как там можно реализовать сортировку например по цене, если есть 2 столбца - цена и скидка и сортировать должно по цена минус скидка. То есть не параметр, а колбэк. или встроенными методами так нельзя?

Alexandr
24.09.2018
07:18:52
А в модели как его оформить?

breakt1mus
24.09.2018
07:19:04
В доке есть примеры по моему с объемом комнаты, причем какая то русская дока

Точно уже не помню

Alexandr
24.09.2018
07:42:44
сделал, к сожалению не работает, при попытке сортировки кидает эксепшн. Есть еще варианты?

Google
Alexandr
24.09.2018
07:46:51
тут скорее говорится о том, что никак) Но как то не верится что такая ситуация ни у кого не возникала и не найдено решений

Andrey
24.09.2018
07:51:16
так стопе) задача изи не знаю в чем трабл)

ты sql запрос составить можешь?

ты ведь с помощью sql можешь конечное значение получить и по нему сортировочку сделать?

Alexandr
24.09.2018
07:53:56
могу, но думал есть решение из коробки, просто подставить в sort=>['param'] и описать геттер для него

Andrey
24.09.2018
08:03:33
могу, но думал есть решение из коробки, просто подставить в sort=>['param'] и описать геттер для него
Окей смотри если делаешь select там перечисляешь поля и в конце пишешь discout - price as finnaly_price

Так работает?

И потом order by finnaly_price

Alexandr
24.09.2018
08:05:00
у меня выборка моделей идет, стандартным activedataprovider, без селектов, все целиком

но нашел метод $dataProvider->sort->createSortParam(), сейчас его пытаюсь раскурить

Andrey
24.09.2018
08:06:37
Покажи код и залей на pastebin

breakt1mus
24.09.2018
08:07:25
И через селект и через дополнительное поле работает сортировка

Просто нужно в датапровайдер указать что поле сортируемое

breakt1mus
24.09.2018
08:08:44
у меня выборка моделей идет, стандартным activedataprovider, без селектов, все целиком
Никто не мешает селектом получать в датапровайдер все поля и одно подтянутое мускулом

Andrey
24.09.2018
08:08:45
бро, ты query сделай просто

$provider = new ActiveDataProvider([ 'query' => ТВОЙ QUERY, 'pagination' => [ 'pageSize' => 20, ], ]);

Andrey
24.09.2018
08:09:44
а есть пример?
https://www.yiiframework.com/doc/guide/2.0/ru/output-data-providers#active-data-provider

breakt1mus
24.09.2018
08:09:45
$provider = new ActiveDataProvider([ 'query' => ТВОЙ QUERY, 'pagination' => [ 'pageSize' => 20, ], ]);
Одно но, надо ещё в сорт параметры поле добавить

Google
breakt1mus
24.09.2018
08:09:58
Иначе сортировка будет не активна

Andrey
24.09.2018
08:10:17


Alexandr
24.09.2018
08:11:13
это стандарт) я про пример добавления именно кастомного параметра

breakt1mus
24.09.2018
08:11:18
Задай какое нибудь поле через as field и увидишь что сортировка будет неактивна

Alexandr
24.09.2018
08:11:37
если я пишу селект, то он и выбирать будет только то что в несм

breakt1mus
24.09.2018
08:12:32
Все поля плюс кастомное

Что ещё надо?

Alexandr
24.09.2018
08:13:08
activedataprovider такое разве скушает?

breakt1mus
24.09.2018
08:13:14
Легко

Идём в доку и раскуриваем

Alexandr
24.09.2018
08:13:30
сейчас попробую

breakt1mus
24.09.2018
08:13:44
Ща если найду пример кину

$query = Model::find()->select('*, (`item1`-`item2` )as custom_item') $dataProvider = new ActiveDataProvider([ 'query' => $query, 'pagination' => [ 'pageSize' => 15, ], ]); $dataProvider->setSort([ 'defaultOrder' => ['id' => SORT_DESC], 'attributes' => [ // Атрибуты сортировки в том числе и кастомный ] ]);

И в рулзы нужно кастомный атрибут добавить как safe

Alexandr
24.09.2018
08:24:42
спасибо)



breakt1mus
24.09.2018
08:30:44
Там же написано что две колонки id, когда составляете запрос лучше проверяйте его непосредственно в sql

Alexandr
24.09.2018
08:47:23
ошибка возникает уже при добавлении ->select('*'), без изменений. видимо все таки активдатапровайдер не может такое понять

Google
breakt1mus
24.09.2018
08:50:45
Вручную

Уверен что схавает

Тут дело в запросе, потому что у меня все работает и так же используются джойны, только запрос попроще

Andrey
24.09.2018
09:10:26
Model::find()->select([Model::tableName().'.*', 'custom_field'])

Alexandr
24.09.2018
09:15:20
сделал)

так же как Андрей подсказал)

всем спасибо

Konstantin
24.09.2018
10:15:18
для phpstorm есть какой нибудь способ запретить индексацию папок тестов, примеров, доков внутри папки /vendor/ ? (/vendor/*/test/, /vendor/*/example/, /vendor/*/docs/) ? чтобы в автокомплит не попадали?

Admin
ERROR: S client not available

Alexandr
24.09.2018
10:17:45
в контекстном меню mark directory as

Maxim
24.09.2018
10:25:22
Подскажите как можно сохранить текущее состояние таблицы в переменную, а потом из этой переменной восстановить таблицу.

Fedor
24.09.2018
10:31:02
А не легче скопировать во временную таблицу?

Alexandr
24.09.2018
10:31:45
$rows = TableName::find()->all(); foreach($rows as $row){ сохранить строку; } Но могут возникнуть проблемы со связями между таблицами

но задача очень странная

Maxim
24.09.2018
10:35:35
Что хранишь в таблице?
У меня там структура nested sets. Я просто в одном из action меняю ее, но перед изменением я бы хотел иметь исходную структуру.

Сергей
24.09.2018
10:36:08
Так просто сохрани своё дерево в переменную и используй.

Maxim
24.09.2018
10:39:00
А не легче скопировать во временную таблицу?
Наверно это дорого обойдется при большом кол-ве записей

Так просто сохрани своё дерево в переменную и используй.
Ну я вот и думаю каким образом это сделать. Просто меня ограничивает функционал пакета nested sets который я использую.

Google
Maxim
24.09.2018
10:44:40
Сергей
24.09.2018
10:45:37
Да
Если дерево одно, могу кусок кода дать) Я делал подобное, только для кэгирования

Maxim
24.09.2018
10:46:26
Я вот думаю, может сделать просто выборку всех веток, получается они будут в виде массивов, а затем мне их нужно будет вставить в корень.

Точнее просто в бд

Сергей
24.09.2018
10:49:00
Ну давай, посмотрю
https://pastebin.com/uHQCRkEN См. функцию getTreeData Логика строится на том, что дерево одно и корневой элемент первый с ID=1

Сергей
24.09.2018
10:54:39
Массив [ ID => ['entity' => ActiveRecord, ..доп. параметры чтобы быстрее находить нужные узлы...]]

Andruha
24.09.2018
11:16:26
Всем привет. Пишу апишку, есть два контроллера games и users, оба контроллера наследуют один и тот же ApiDefaultController, где имеется $behaviors['corsFilter'] = [ 'class' => Cors::class, ]; но при любом запросе games/<action> все ок, а вот users/<action> при запросе с фронта localhost выдает ошибку Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access. Все запросы сопровождаются одинаковым набором хедеров. Где что еще можно проверить, почему у контроллеров разное поведение?

причем это только с localhost, на stage сервере все ок, через postman все ок

Maxim
24.09.2018
11:54:07
Сергей
24.09.2018
12:59:58
как можно скрыть строку в GridView? например если в опр. столбце пустая ячейка то скрывать всю строку, подскажите куда копать?)

Alexandr
24.09.2018
13:21:24
фильтровать данные в запросе

Andrey
24.09.2018
13:31:52
фильтровать данные в запросе
это будет правильнее. вот еще способ воздействовать конкретно на строку: <?= GridView::widget([ 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'rowOptions' => function ($model, $key, $index, $gridView) { return Your_logic ? ['class' => 'hidden'] : []; },

R
24.09.2018
14:05:59
Всем привет! Может кто знает, есть какой-нибудь готовый Content Construction Kit для yii? Или может не привязанный к фреймворку. Если точнее, нужно какое-то готовое решения для конструктора статей, то есть чтобы можно было из стилизованных блоков собирать красивые статьи (допустим, добавил блок текста, потом добавил блок с картинкой, затем еще какой-нибудь блок и тд).

PowerAxis
24.09.2018
14:17:44
PageBuilder

Для жумлы или вп

Andrey
24.09.2018
14:46:25
Привет! Кто знает, как должно выглядеть правило в валидаторе, которое должно проверяться всегда, т.е. без привязки к конкретному полю, а всегда когда вызывется $model->validate()?

Страница 1644 из 1721