@yii2ru

Страница 538 из 1721
Konstantin
28.08.2017
07:13:45
http://php.net/manual/ru/function.exec.php Ребят, return_var возвращает true/false?
наверно лучше юзать http://php.net/manual/ru/function.proc-open.php

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

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
Cannot use object of type Closure as array
у тебя же всё чётко в ошибке написано

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:50
А более глобально на уровне контроллера можно?

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

Айбулат
28.08.2017
08:46:31
А более глобально на уровне контроллера можно?
yii2 - https://nix-tips.ru/yii-2.html, php - http://php.net/manual/ru/function.set-error-handler.php

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?

валидация - string
без указания длины и т.п.?

Алексей
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
json_encode(array) - в базу пишет false
http://php.net/manual/ru/function.json-last-error.php

Айбулат
28.08.2017
12:11:13
getErrors идет ошибка что не строка
если вы хотите хранить json, уберите валидацию по строке

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
пустота

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