
Vladislav
21.08.2017
09:58:53
никак
beforeAction запускается всегда
но ты можешь в before Action проверять какой сейчас экшн и делать ретурн true на нужные
но это говнокод

Google

Vladislav
21.08.2017
09:59:23
так делать нельзя

Anton
21.08.2017
10:05:23
понял, спасибо

?M͘͜r͜͠.̧͜͢ ̧͏͜͠Н͏͜я̷̷̛҉м̴̶̴̨̢ ҉̨͟͡Н̷̢̀я͟м̵̀
21.08.2017
10:07:56

Vladislav
21.08.2017
10:08:05
а какая задача?
если ты пытаешься решить своб задачу отключением запуска beforeAction, значит задача неправильная
нужно подумать побольше

Anton
21.08.2017
10:10:27
структура проекта неправильная, потому что beforeAction отвечает за проверку авторизации

Vladislav
21.08.2017
10:15:05
отключи проверку авторизации для определенных действий через behaviours

Anton
21.08.2017
10:21:25
ну так в beforeAction и стоит банальная проверка авторизации через кастомные методы
и что бы отключить проверку мне надо отключить beforeAction

Vladislav
21.08.2017
10:24:40
а зачем ты делаешь проверку авторизации в beforeAction, если для этого существует behavior
а если ты уже наговнокодил и сунул это в befaoreAction, то просто перед проверкой авторизации глянь, какой сейчас экшн будет
и для него не вызывай проверку авторизации
но beforeAction отключать точно не надо

Google

Anton
21.08.2017
10:25:51
я этого не делал, проект от прошлого программера перешел
да, так и сделал уже, спасибо

Vladislav
21.08.2017
10:26:13
ок
я бы переписал, пока не пздно
перенести авторизацию не сложно
там не особо много логики по идее

?M͘͜r͜͠.̧͜͢ ̧͏͜͠Н͏͜я̷̷̛҉м̴̶̴̨̢ ҉̨͟͡Н̷̢̀я͟м̵̀
21.08.2017
10:26:49

Vladislav
21.08.2017
10:26:50
как правило

?M͘͜r͜͠.̧͜͢ ̧͏͜͠Н͏͜я̷̷̛҉м̴̶̴̨̢ ҉̨͟͡Н̷̢̀я͟м̵̀
21.08.2017
10:27:03
там событие инитится на 1 строке, а на следующей уже триггер
ну это чтоб ты понимал архитектуру общую проджекта)

Sergio
21.08.2017
10:44:20
всем привет. достался проект на доработку, в Yii2 только начал разбираться. развернул, композер апдейт сделал... есть какаято команда, для консоли, чтобы проинициализировать первоначальную структуру БД?

Oleksii
21.08.2017
10:46:26
php init

Sergio
21.08.2017
10:46:27
...
init Create an empty Git repository or reinitialize an existing one
...
зачем гит инициализировать-то?

Oleksii
21.08.2017
10:46:29
cсори)

Айбулат
21.08.2017
10:46:58
для БД: yii migrate
для проекта в целом, с выбором версии(dev, prod) - yii init
cd в папку с файлами init.php, yii - корень проекта
и попробуй php init/php yii init/yii init

Roman
21.08.2017
11:35:01
Ребят, подскажите можно ли как-то в ListView сделать так, чтобы первые 3 элемента использовали один layout, а все остальные другой?

Konstantin
21.08.2017
11:53:20
http://www.yiiframework.com/doc-2.0/yii-widgets-listview.html#$itemView-detail
function ($model, $key, $index, $widget)

Google

Konstantin
21.08.2017
11:53:48
можно в этой функции сделать проверку на $index
если 0, 1 или 2, то вернуть один шаблон
а если нет, то другой

Evgeniy
21.08.2017
12:15:08
Всем привет, ребят, кто-нибудь подключал bootstrap 4?

Maxim
21.08.2017
12:28:07
Почему ошибка не появляется на экране? Что не так?
[['users'], 'filter', 'filter' => function ($users) {
foreach ($users as $user) {
if ($user->post_id === $this->user->post_id) {
$this->addError($this->user->post_id, 'Ошибка!!! Один пост у двух юзеров!');
}
}
return $this->users;
}];
кажется разобрался
Все-таки не разобрался. Почему на экране не плявляется ошибка?
[['posts'], function ($attribute, $params, $validator) {
foreach ($this->{$attribute} as $post) {
if ($post->user_id === $this->post->user_id) {
$this->addError($attribute, 'Один пост у двух юзеров!!!');
}
};
}];
Валидация срабатывает, работает как нужно, но сообщения нет
Эти названия полей для примера, на самом деле там другое, но суть та же

Айбулат
21.08.2017
12:51:26

Maxim
21.08.2017
12:52:03
да. post_id есть. Я нашел примечание одно в мануале
http://joxi.ru/82QjOadt14jndA
Сейчас попробую и вернусь

Maxim
21.08.2017
13:01:49
[['posts'], function ($attribute, $params, $validator) {
foreach ($this->{$attribute} as $post) {
if ($post->user_id === $this->post->user_id) {
$validator->addError($this->post, $attribute, 'Один пост у двух юзеров!!!');
}
};
}];
Так тоже не работает
Что я делаю не так?
Кто-нибудь делал кастомные валидаторы?
@aibulatik я использую ActiveForm, поле должно само появляться

Айбулат
21.08.2017
13:05:52

Maxim
21.08.2017
13:06:02
не изменял

Boris
21.08.2017
15:25:17
Подскажите пожалуйста по поиску many-to-many.
Есть три таблицы:
1. articles
2. tag
3. tag_articles (id|article_id|tag_id)
В articles есть связь:
public function getTagArticles()
{
return $this->hasMany(TagArticle::class, ['article_id' => 'id']);
}
public function getCurrentTags()
{
return $this->hasMany(Tag::class, ['id' => 'tag_id'])
->via('tagArticles');
}
И $model->currentTags отдает модели тегов назначенных для article.
Есть дефолтная ArticleSearch и я никак не могу понять что в нее добавлять для фильтрации articles по тегам.
Что-бы получать все articles с tag_id 5 например.

Ivan
21.08.2017
15:30:58

Boris
21.08.2017
15:38:40
Ниже Info: In general, when eagerly loading N relations among which M relations are defined with a junction table, a total number of N+M+1 SQL statements will be executed. Note that a nested relation a.b.c.d counts as 4 relations.?

Google

Ivan
21.08.2017
15:41:00
В чём вопрос?

Boris
21.08.2017
15:42:11
ниже синей плашки
Скинул выше текст синей плашки. На правильную смотрю?

Ivan
21.08.2017
15:49:23
Сделай по ctrl+F поиск по странице $query->andWhere(['status' => Order::STATUS_ACTIVE]);

Boris
21.08.2017
16:02:13
Прочел, не совсем понимаю как это применить в search модели.
Вот так работает, это норм?
if (!empty($this->searchTag)) {
$query->joinWith('tagArticles')->where(['tag_id' => $this->searchTag]);
}
Или можно как-то еще проще и понятнее сделать?

Admin
ERROR: S client not available

Karim
21.08.2017
16:19:42
filterwhere

Boris
21.08.2017
16:20:15
Не понял, можно подробнее?

Karim
21.08.2017
16:21:30
вместо If empty юзать.
$query->joinWith('tagArticles')->filterWhere(['tag_id' => $this->searchTag]);
Но пропускать будет только если $this->searchTag === Null, если не ошибаюсь

Boris
21.08.2017
16:23:52
работает
в итоге моя связь
public function getCurrentTags()
{
return $this->hasMany(Tag::class, ['id' => 'tag_id'])
->via('tagArticles');
}
и не нужна при этом поиске?

? ? ? Alex ? ? ?
21.08.2017
16:34:09
подскажите как в уии организовать в filterModel по параметру связанной модели?
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
'id',
'href',
'category.name',
['class' => 'yii\grid\ActionColumn'],
],
]); ?>
т.е надо поиск по category.name

Boris
21.08.2017
16:34:57
Бгг)
только что выше этот вопрос спрашивал

Alex
21.08.2017
16:35:29
ну создаешь форму с полем каттегории и ручками дописываешь в search() (ну или как ты обзываешь метод у себя) фильтр по полю

? ? ? Alex ? ? ?
21.08.2017
16:36:01
окей а вывести как мне список этих категорий нормально в селекте для поиска?

Alex
21.08.2017
16:36:16
ща покажу

Google

Alex
21.08.2017
16:36:22
дай шторму запустить)

Boris
21.08.2017
16:36:49
http://joxi.ru/a2XWEL7Cy4BkBm?d=1
Что-то типо тебе надо?

? ? ? Alex ? ? ?
21.08.2017
16:37:02
да

Alex
21.08.2017
16:37:59
[
'attribute' => 'projectManager',
'value' => 'projectManager.shortName',
'filter' => \app\models\User::getDataList(false,
\app\models\enums\UserTypes::PROJECT_MANAGER)
],
getDataList возвращает массив

Boris
21.08.2017
16:38:26
[
'attribute' => 'searchTag',
'filter' => $tags,
],
где $tags массив ['id' => 'name']

? ? ? Alex ? ? ?
21.08.2017
16:38:31

Alex
21.08.2017
16:38:40
там длинный кусок)

? ? ? Alex ? ? ?
21.08.2017
16:38:42
это куда вкидать?
в виджет?

Alex
21.08.2017
16:38:55
эта часть идет вместо 'category.name',

? ? ? Alex ? ? ?
21.08.2017
16:39:07
понял
спасибо
хм
почему не видно этих полей?

Валентин
21.08.2017
16:52:51
Заполнить attribute в колонке