Borys
Повесь backend из advanced на доп. домен и делай же :)
Vladimir
Никита
Borys
Ребят
Borys
насколько норм так делать родительскую модель? :D
Borys
https://pastebin.com/raw/YjuqjFfa
Borys
ммм, что-то типо:
if (isset($this->attribute) {
// подключаю нужное поведение
}
SiZE
в итоге базовый класс будет типа такого
class ActiveRecord extends ActiveRecord
{
public $isDeletedAttribute = 'is_deleted';
public function behaviors()
{
$behaviors = [];
if ($this->hasAttribute($this->isDeletedAttribute)) {
// подключаем
}
}
}
Borys
оффтоп, а как ты так код сюда залил?
Юрий
Юрий
Тройной апостроф с обеих сторон
Borys
code();
Borys
спасибо
SiZE
или как его там )
Юрий
Одинарный для обычных работает с переменным успехом, поэтому и для одинарных лучше тройной
Юрий
Одинарный месяц не работал как-то
Borys
А почему именно
public $isDeletedAttribute = 'is_deleted';
а не
public $is_deleted;
SiZE
потому что гладиолус ) зачем ты собрался объявлять атрибут, который в таблице?
SiZE
и если в какой-то таблице он назовется "isFuckingDeleted" будешь в модели переопределять behaviors?
Borys
nope, мне надо именно что-бы были эти атрибуты в наследуемом классе
Borys
Где можно за это почитать?
public $isDeletedAttribute = 'is_deleted'; в доке не вижу чот
Borys
ааа, я понял))
Borys
public $isDeletedAttribute = 'is_deleted';
$behaviors = [];
if ($this->hasAttribute($this->isDeletedAttribute)) {
$behaviors[] = [
'softDeleteBehavior' => [
'class' => SoftDeleteBehavior::class,
'softDeleteAttributeValues' => [
$this->isDeletedAttribute => true
],
]
];
}
Borys
Оно же?
Serg
Есть идеи как красиво расширить rbac.
Помимо штатной таблицы с ролями (assignment) еще одна - получиная с битрикса, Нужно роли клеить на лету.
Вариант с раширением кучкки методов класса DbManager какжется грубым, может как-то подняться на более высокий уровень?
Borys
@sizepermru оно верно?
Borys
https://pastebin.com/raw/Ep8Dekvh
SiZE
Toly
Borys
ребят, получить всех пользователей по роли в виде массива id => username
Borys
через связь, верно же?
SiZE
где получить? когда получить? зачем получить? :)
knifeblade
чезер модель связи а потом array::map хелпер
knifeblade
может так
Toly
чезер модель связи а потом array::map хелпер
Array Map сожрёт память. Производительнй будет сразу из БД выбрать только 2 столбца:
->select(['username', 'id'])->indexBy('id')->column()
Порядок колонок в select имеет значение, т.к. column() возьмёт первый столбец.
Borys
Borys
ребят, снова я с нубо вопросами :)
Borys
мозг уже не соображает, как сделать что-бы был возврат этого:
'created_at:date',
'updated_at:date',
[
'attribute' => 'created_by',
'value' => 'createdBy.username',
],
[
'attribute' => 'updated_by',
'value' => 'updatedBy.username',
],
Borys
Именно в таком формате, иначе gridview ругается
Toly
Не понял вопрос
SiZE
+1
SiZE
Toly
мозг уже не соображает, как сделать что-бы был возврат этого:
'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',
],
];
Borys
Setting unknown property: yii\grid\DataColumn::0
@void0 так и возвращаю, но это получается же в массиве columns будет еще массив
Toly
Нужно больше подробностей
Toly
Как происходит объединение конфига?
SiZE
Toly
GridView::widget(['columns' => $columns]);
Borys
Нужно больше подробностей
Есть стандартный 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',
],
],
]); ?>
Borys
Хочу получить что-то типо:
Borys
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
'columns' => someName(),
Toly
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => ArrayHelper::merge(someName(), []),
],
]); ?>
SiZE
Borys
Работает, но получается шляпа :)
Borys
http://dl4.joxi.net/drive/2017/04/27/0017/0874/1139562/62/9bd6522242.png
Borys
т.е. в определенное место надо добавлять новые поля
SiZE
Ну выкручивайся :)
Borys
уже)
Borys
спасибо за помощь
Artem
Всем привет. Подскажите пожалуйста, как составить обработку маршрута для такой ситуации: /:section_slug/:section_slug/:section_slug/:page_slug причем кол-во вложенных друг в друга разделов неизвестно и может быть от одного и до бесконечности?
SiZE
Своё правило
SiZE
Сверять урл в базе
Владимир
Хочу написать программу для управления тонкими клиентами, насколько целеообразно использовать фреймворк yii для этого или лучше самопис?
Интерфейс будет типа такого
Владимир
Vasily
Для тонких клиентов надо использовать толстые решения.
Vasily
Нужно сохранять баланс.
Vasily
Баланс в мире - это, очень важно.
Nurik
https://github.com/yiisoft/yii2/blob/master/docs/guide-ru/rest-versioning.md
Бля в официальной доке пишут такую хрень:
"Для лучшего разделения ответственности кода вы можете составить общий набор базовых классов ресурсов и контроллеров, и субклассировать их в каждом отдельно взятом модуле версии. "
Nurik
Какой тогда смысл в версионировании, если кто-то может запороть все версии, просто поменяв родительский класс.
Nurik
Поправьте меня, если я не прав. Но мне кажется это какой-то хренью.
SiZE
SiZE
SiZE
для этого МР и кодревью