Страница 1 из 1

Закрыть доступ к редактированию GridView

Добавлено: 2017.07.10, 09:31
Introvert
Как закрыть доступ гостю к редактированию и удалению записей в GridView, если точнее доступ закрыт, нужно не выводить эти кнопки. Делаю

Код: Выделить всё

if (!Yii::$app->user->isGuest) {}
на сайте, а тут как? Нашел вывод кнопок:

Код: Выделить всё

 ['class' => 'yii\grid\ActionColumn',
'template' => '{view}{update}{delete}',
]

Re: Закрыть доступ к редактированию GridView

Добавлено: 2017.07.10, 12:31
samdark
Подменять template в зависимости от условия.

Re: Закрыть доступ к редактированию GridView

Добавлено: 2017.07.10, 13:32
Introvert
samdark писал(а): 2017.07.10, 12:31 Подменять template в зависимости от условия.
А как установить условие? если if то пишет ошибку syntax error, unexpected 'if' (T_IF)

Re: Закрыть доступ к редактированию GridView

Добавлено: 2017.07.10, 15:04
samdark

Код: Выделить всё

'template' => Yii::$app->user->isGuest ? '{view}' : '{view}{update}{delete}',

Re: Закрыть доступ к редактированию GridView

Добавлено: 2017.07.10, 16:24
Introvert
samdark писал(а): 2017.07.10, 15:04

Код: Выделить всё

'template' => Yii::$app->user->isGuest ? '{view}' : '{view}{update}{delete}',
Спасибо работает!) а как разобрать почему именно такая запись? Тыкните на документацию где написано

Re: Закрыть доступ к редактированию GridView

Добавлено: 2017.07.10, 16:30
Nex-Otaku
http://php.net/manual/ru/language.opera ... on.ternary

Похоже, вам ещё только предстоит выучить синтаксис PHP.

Re: Закрыть доступ к редактированию GridView

Добавлено: 2017.07.10, 16:39
Introvert
Nex-Otaku писал(а): 2017.07.10, 16:30 http://php.net/manual/ru/language.opera ... on.ternary

Похоже, вам ещё только предстоит выучить синтаксис PHP.
Похоже да..

Re: Закрыть доступ к редактированию GridView

Добавлено: 2017.07.11, 18:07
Introvert
Nex-Otaku писал(а): 2017.07.10, 16:30 http://php.net/manual/ru/language.opera ... on.ternary

Похоже, вам ещё только предстоит выучить синтаксис PHP.
А если по сложнее, в гриде есть строчка 'filterModel' => $searchModel, поиск по полям, если закоментировать поиск не отображается, если сделать

Код: Выделить всё

'filterModel' => Yii::$app->user->isGuest ? '' : $searchModel,
Работает, но пустота остается, потому что нужно все вместе на условие проверять, всю строчку. А это массив, и вписать перед 'filterModel' проверку не выходит

Re: Закрыть доступ к редактированию GridView

Добавлено: 2017.07.11, 18:14
Nex-Otaku
Ну так заполните массив без этой строки. А потом по условию добавьте "filterModel".

Код: Выделить всё

$arr = [
    'blablabla' => 'blabla',
    ....
];
if (!Yii::$app->user->isGuest) {
    $arr['filterModel'] = $searchModel;
}

Re: Закрыть доступ к редактированию GridView

Добавлено: 2017.07.11, 18:28
Introvert
Nex-Otaku писал(а): 2017.07.11, 18:14 Ну так заполните массив без этой строки. А потом по условию добавьте "filterModel".

Код: Выделить всё

$arr = [
    'blablabla' => 'blabla',
    ....
];
if (!Yii::$app->user->isGuest) {
    $arr['filterModel'] = $searchModel;
}
Тогда примерно так, но не хочет добавлять в виджет массив с этим ключем, полностью второй виджет хочет выводить

Код: Выделить всё

if (!Yii::$app->user->isGuest) {
       GridView::widget(['filterModel' => $searchModel]);
    }

Re: Закрыть доступ к редактированию GridView

Добавлено: 2017.07.12, 07:10
Nex-Otaku
Вот так

Код: Выделить всё

$arr = [
    'blablabla' => 'blabla',
    ....
];
if (!Yii::$app->user->isGuest) {
    $arr['filterModel'] = $searchModel;
}
GridView::widget($arr);
Почитайте, что такое переменные и зачем они нужны.

Re: Закрыть доступ к редактированию GridView

Добавлено: 2017.07.12, 10:53
Introvert
Nex-Otaku писал(а): 2017.07.12, 07:10 Вот так

Код: Выделить всё

$arr = [
    'blablabla' => 'blabla',
    ....
];
if (!Yii::$app->user->isGuest) {
    $arr['filterModel'] = $searchModel;
}
GridView::widget($arr);
Почитайте, что такое переменные и зачем они нужны.
пасиб) не додумался в переменную записать все

Re: Закрыть доступ к редактированию GridView

Добавлено: 2017.07.12, 12:19
sosnovskiy
Introvert писал(а): 2017.07.12, 10:53
Nex-Otaku писал(а): 2017.07.12, 07:10 Вот так

Код: Выделить всё

$arr = [
    'blablabla' => 'blabla',
    ....
];
if (!Yii::$app->user->isGuest) {
    $arr['filterModel'] = $searchModel;
}
GridView::widget($arr);
Почитайте, что такое переменные и зачем они нужны.
пасиб) не додумался в переменную записать все
Страно. Вам один в один выше написали про переменную что бы вы не думали...