
Konstantin
28.08.2017
07:13:45
ибо обычный экзек не убивает процесс, если тот завис. в итоге будет висеть пхп вечно, даже если таймл-лимит в пхп кончился

Stas
28.08.2017
07:30:41
подскажите пытаюсь засунуть кнопки грида в анонимку не нехочет возвращать массив как правильно вернуть подскажите:
'visibleButtons' =>
function () {
if (Yii::$app->user->identity->role != \common\models\enum\UserRoleEnum::ACCOUNT_FIN_DEPARTMENT) {
return
[
'update' => function ($model, $key, $index) {
if (!$model->canEdit) {
return false;
}
return true;
},
'delete' => function ($model, $key, $index) {
if (!$model->canEdit) {
return false;
}
return (($model->id == Yii::$app->user->getId()) || $model->role == 'admin') ? false : true;
}
];
}
},
Cannot use object of type Closure as array

Google

Mr.
28.08.2017
07:43:48

Stas
28.08.2017
07:44:16
это понятно я непойму как правильно сделать
что бы вернуло то что нцжно

Mr.
28.08.2017
07:45:04
хз
собирать массив раньше?

Stas
28.08.2017
07:45:33
мне ужно вернуть кнопки только по условию а как его правильно синтаксически сделать хз непойму

Mr.
28.08.2017
07:46:08
ну, я хз, костыли это или нет, но я обычно в том месте, где задаю темплейты, делаю if(!условие) return;

Stas
28.08.2017
07:46:09

Mr.
28.08.2017
07:46:17
ну по другому никак
оно ожидает array, а ты возвращаешь ему closure
скорее всего, там обращение, типа $this->visibleButtons['update']
а у тебя $this->visibleButtons typeof closure, и такое обращение будет невозможно

Stas
28.08.2017
07:47:17

Mr.
28.08.2017
07:47:24
ща
у меня пример есть

Google

Mr.
28.08.2017
07:50:08
очень старый пример, так что не ругайтесь на код
например, в delete, перед return'ом можно было-бы вставтиь
if(!\Yii::$app->user->can('delete')) return false;
тогда кнопка не рендерится
ребята на том проекте, из которого я код взял, решили не заморачиваться с правами доступа, и выпилили все годные примеры :(
вот то же самое, только это на zend'е
но логика такая же

Karim
28.08.2017
08:01:00
'visibleButtons' => call_user_func(function () {return [];})
Так можно)

Алексей
28.08.2017
08:33:43
Коллеги, добрый день.
Имеется вопрос: как можно логировать все ошибки PHP, хранив в MySQL, а клиенту отвечать, все окей, не парьтесь
где перехват лучше сделать
и как

Никита
28.08.2017
08:44:07

Алексей
28.08.2017
08:44:50
А более глобально на уровне контроллера можно?

Konstantin
28.08.2017
08:45:52
На уровне пхп наверное можно

Айбулат
28.08.2017
08:46:31

SiZE
28.08.2017
09:28:37
@samdark а этот MR забросили из-за тестов? https://github.com/yiisoft/yii2-redis/pull/106

Alexander
28.08.2017
11:00:06
Не знаю
Времени не было дожать, наверное

Алексей
28.08.2017
11:34:28
дергаю
$exception = Yii::$app->errorHandler->exception;
$array=$exception->getTrace();
и хочу сохранить в json для помещения в базу - но сохраняется пустота..
getTraceAsString мне не достаточно

Google

Алексей
28.08.2017
11:34:49
как выдернуть полный трейс лог и сохранить его...

Vladislav
28.08.2017
11:36:09
а в это время в $array массив?
вардамп че грит?

Алексей
28.08.2017
11:51:13
вардамп - да массив
json_encode(array) - в базу пишет false
хотя вардамп в свою очередь - возвращает массив
а если убрать из 'trace' => json_ecode(array) , убрать тот json_encode - то в базу ничего не пишется, ругается на то что должна быть строка
вообще бред какой то

Айбулат
28.08.2017
11:55:47
а какой формат поля в бд?

Vladislav
28.08.2017
12:00:43
плюс, какие правила валидации?

Алексей
28.08.2017
12:06:59
БД - text

Алексей
28.08.2017
12:07:06
валидация - string

Айбулат
28.08.2017
12:08:07
есть возможность изменить в бд на JSON?

Алексей
28.08.2017
12:08:32
да

Vladislav
28.08.2017
12:09:24
после валидации нет ошибок?
$error->errors

Айбулат
28.08.2017
12:09:50
попробуйте изменить
есть возможность изменить в бд на JSON?

Google

Алексей
28.08.2017
12:09:51
getErrors идет ошибка что не строка

Vladislav
28.08.2017
12:09:52
и ->save() возвращает тру?

Алексей
28.08.2017
12:10:00
если убираю 'trace' => json_ecode(array)
тут json encode

Ямиль
28.08.2017
12:10:36

Айбулат
28.08.2017
12:11:13

Vladislav
28.08.2017
12:11:27
какая разница?

Алексей
28.08.2017
12:11:29
всю жизнь проходило, json это же строка

Vladislav
28.08.2017
12:11:29
json -строка

Admin
ERROR: S client not available

Алексей
28.08.2017
12:11:32
а не объект
и не массив

Vladislav
28.08.2017
12:11:40
должно уметь хранится

Айбулат
28.08.2017
12:11:44
это понятно
мало ли

Vladislav
28.08.2017
12:12:02
а перед сейвомЮ, если сделать варддамп
$error
там что?
в частности $error->exception

Алексей
28.08.2017
12:17:18
так я делаю даже после

Google

Алексей
28.08.2017
12:17:21
там массив

Vladislav
28.08.2017
12:19:34
сюда выйлей

Алексей
28.08.2017
12:19:36
string(18) "Recursion detected"
$array=$exception->getTrace();
echo '<pre>'; print_r(json_encode($array)); echo '</pre>';
var_dump(json_last_error_msg());

Vladislav
28.08.2017
12:20:15
ну еп вашу мать
не это)
дай мне var_dump($error->exception) прям перед ->save()

Алексей
28.08.2017
12:21:00
bool(false)

Vladislav
28.08.2017
12:21:21
lol

Айбулат
28.08.2017
12:21:33
если валидацию по string убрать, работает?

Vladislav
28.08.2017
12:21:52
во-первых, ты нарушаешь пср
вот так делать нельзя
if (!empty($ex)) {
$error->exception = json_encode(/*...*/);
}

Алексей
28.08.2017
12:22:41
если сделать safe у exception БД - то записывается пустота

Vladislav
28.08.2017
12:22:45
во-вторых
выкинь все, кроме 'trace'
типа так
if (/**/) {
$error->exception = json_encode(['trace' => $array]);
}
вот так сделай
и скажи, что в базу полезло?*

Алексей
28.08.2017
12:25:49
пустота