
Boris
27.04.2017
08:20:57
насколько норм так делать родительскую модель? :D
https://pastebin.com/raw/YjuqjFfa

SiZE
27.04.2017
08:30:50

Boris
27.04.2017
08:31:51
ммм, что-то типо:
if (isset($this->attribute) {
// подключаю нужное поведение
}

Google

SiZE
27.04.2017
08:32:27
в итоге базовый класс будет типа такого
class ActiveRecord extends ActiveRecord
{
public $isDeletedAttribute = 'is_deleted';
public function behaviors()
{
$behaviors = [];
if ($this->hasAttribute($this->isDeletedAttribute)) {
// подключаем
}
}
}

Boris
27.04.2017
08:35:56
оффтоп, а как ты так код сюда залил?

Юрий
27.04.2017
08:36:29
Тройной апостроф с обеих сторон

Boris
27.04.2017
08:36:58
code();
спасибо

SiZE
27.04.2017
08:37:09
или как его там )

Юрий
27.04.2017
08:37:46
Одинарный для обычных работает с переменным успехом, поэтому и для одинарных лучше тройной
Одинарный месяц не работал как-то

Boris
27.04.2017
08:39:33
А почему именно
public $isDeletedAttribute = 'is_deleted';
а не
public $is_deleted;

SiZE
27.04.2017
08:41:19
потому что гладиолус ) зачем ты собрался объявлять атрибут, который в таблице?

Google

SiZE
27.04.2017
08:42:01
и если в какой-то таблице он назовется "isFuckingDeleted" будешь в модели переопределять behaviors?

Boris
27.04.2017
08:43:39
nope, мне надо именно что-бы были эти атрибуты в наследуемом классе
Где можно за это почитать?
public $isDeletedAttribute = 'is_deleted'; в доке не вижу чот
ааа, я понял))
public $isDeletedAttribute = 'is_deleted';
$behaviors = [];
if ($this->hasAttribute($this->isDeletedAttribute)) {
$behaviors[] = [
'softDeleteBehavior' => [
'class' => SoftDeleteBehavior::class,
'softDeleteAttributeValues' => [
$this->isDeletedAttribute => true
],
]
];
}
Оно же?

Serg
27.04.2017
08:54:05
Есть идеи как красиво расширить rbac.
Помимо штатной таблицы с ролями (assignment) еще одна - получиная с битрикса, Нужно роли клеить на лету.
Вариант с раширением кучкки методов класса DbManager какжется грубым, может как-то подняться на более высокий уровень?

Boris
27.04.2017
08:57:44
@sizepermru оно верно?
https://pastebin.com/raw/Ep8Dekvh

SiZE
27.04.2017
10:07:35

Anatoly
27.04.2017
10:52:42

Boris
27.04.2017
12:26:43
ребят, получить всех пользователей по роли в виде массива id => username
через связь, верно же?

SiZE
27.04.2017
12:28:16
где получить? когда получить? зачем получить? :)

Dmitriy
27.04.2017
12:42:26
чезер модель связи а потом array::map хелпер
может так

Anatoly
27.04.2017
12:44:24
чезер модель связи а потом array::map хелпер
Array Map сожрёт память. Производительнй будет сразу из БД выбрать только 2 столбца:
->select(['username', 'id'])->indexBy('id')->column()
Порядок колонок в select имеет значение, т.к. column() возьмёт первый столбец.

Boris
27.04.2017
12:48:56
ребят, снова я с нубо вопросами :)
мозг уже не соображает, как сделать что-бы был возврат этого:
'created_at:date',
'updated_at:date',
[
'attribute' => 'created_by',
'value' => 'createdBy.username',
],
[
'attribute' => 'updated_by',
'value' => 'updatedBy.username',
],

Google

Boris
27.04.2017
13:45:27
Именно в таком формате, иначе gridview ругается

Anatoly
27.04.2017
13:46:56
Не понял вопрос

SiZE
27.04.2017
13:46:59
+1

Anatoly
27.04.2017
13:47:35
мозг уже не соображает, как сделать что-бы был возврат этого:
'created_at:date',
'updated_at:date',
[
'attribute' => 'created_by',
'value' => 'createdBy.username',
],
[
'attribute' => 'updated_by',
'value' => 'updatedBy.username',
],
return [
'created_at:date',
'updated_at:date',
[
'attribute' => 'created_by',
'value' => 'createdBy.username',
],
[
'attribute' => 'updated_by',
'value' => 'updatedBy.username',
],
];

Boris
27.04.2017
13:48:30
Setting unknown property: yii\grid\DataColumn::0
@void0 так и возвращаю, но это получается же в массиве columns будет еще массив

Anatoly
27.04.2017
13:49:37
Нужно больше подробностей
Как происходит объединение конфига?

SiZE
27.04.2017
13:50:12

Anatoly
27.04.2017
13:50:50
GridView::widget(['columns' => $columns]);

Boris
27.04.2017
13:51:02
Нужно больше подробностей
Есть стандартный gridview:
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
'created_at:date',
'updated_at:date',
[
'attribute' => 'created_by',
'value' => 'createdBy.username',
],
[
'attribute' => 'updated_by',
'value' => 'updatedBy.username',
],
],
]); ?>
Хочу получить что-то типо:

Boris
27.04.2017
13:52:46
function someName () {
return [
'created_at:date',
'updated_at:date',
[
'attribute' => 'created_by',
'value' => 'createdBy.username',
],
[
'attribute' => 'updated_by',
'value' => 'updatedBy.username',
],
];
}
И в gridview:
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
someName(),
// etc
],
]); ?>

SiZE
27.04.2017
13:53:11
'columns' => someName(),

Anatoly
27.04.2017
13:53:17
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => ArrayHelper::merge(someName(), []),
],
]); ?>

Boris
27.04.2017
13:53:44

SiZE
27.04.2017
13:54:07

Boris
27.04.2017
13:56:32
Работает, но получается шляпа :)

Admin
ERROR: S client not available

Boris
27.04.2017
13:56:33
http://dl4.joxi.net/drive/2017/04/27/0017/0874/1139562/62/9bd6522242.png

Google

Boris
27.04.2017
13:57:01
т.е. в определенное место надо добавлять новые поля

SiZE
27.04.2017
13:58:47
Ну выкручивайся :)

Boris
27.04.2017
14:02:22
уже)
спасибо за помощь

Artyom
27.04.2017
14:39:35
Всем привет. Подскажите пожалуйста, как составить обработку маршрута для такой ситуации: /:section_slug/:section_slug/:section_slug/:page_slug причем кол-во вложенных друг в друга разделов неизвестно и может быть от одного и до бесконечности?

SiZE
27.04.2017
15:09:48
Своё правило
Сверять урл в базе

Isaev
27.04.2017
16:22:18
Хочу написать программу для управления тонкими клиентами, насколько целеообразно использовать фреймворк yii для этого или лучше самопис?
Интерфейс будет типа такого

Vasily
27.04.2017
16:23:56
Для тонких клиентов надо использовать толстые решения.
Нужно сохранять баланс.
Баланс в мире - это, очень важно.

Nurik
27.04.2017
17:36:49
https://github.com/yiisoft/yii2/blob/master/docs/guide-ru/rest-versioning.md
Бля в официальной доке пишут такую хрень:
"Для лучшего разделения ответственности кода вы можете составить общий набор базовых классов ресурсов и контроллеров, и субклассировать их в каждом отдельно взятом модуле версии. "
Какой тогда смысл в версионировании, если кто-то может запороть все версии, просто поменяв родительский класс.
Поправьте меня, если я не прав. Но мне кажется это какой-то хренью.

SiZE
27.04.2017
17:53:52

Nurik
27.04.2017
17:54:58

SiZE
27.04.2017
17:55:35
для этого МР и кодревью
ну конечно если ты не в одну каску

Nurik
27.04.2017
17:56:23
ну ну.

Google

SiZE
27.04.2017
17:57:21
вообще базовый контроллер ничего не возвращает, чо там запороть то можно?
ну если мы конкретно о таком примере

Nurik
27.04.2017
17:57:45
там в примере не базовые контроллеры.