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

Всё про контроль доступа пользователей: фильтры, RBAC, проверки
Закрыто
Аватара пользователя
Introvert
Сообщения: 139
Зарегистрирован: 2017.07.04, 13:42
Откуда: Украина, Киев

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

Сообщение Introvert » 2017.07.10, 09:31

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

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

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

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

 ['class' => 'yii\grid\ActionColumn',
'template' => '{view}{update}{delete}',
]
Пишу социальную сеть заявок для фирм.

Аватара пользователя
samdark
Администратор
Сообщения: 9171
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

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

Сообщение samdark » 2017.07.10, 12:31

Подменять template в зависимости от условия.

Аватара пользователя
Introvert
Сообщения: 139
Зарегистрирован: 2017.07.04, 13:42
Откуда: Украина, Киев

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

Сообщение Introvert » 2017.07.10, 13:32

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

Аватара пользователя
samdark
Администратор
Сообщения: 9171
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

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

Сообщение samdark » 2017.07.10, 15:04

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

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

Аватара пользователя
Introvert
Сообщения: 139
Зарегистрирован: 2017.07.04, 13:42
Откуда: Украина, Киев

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

Сообщение Introvert » 2017.07.10, 16:24

samdark писал(а):
2017.07.10, 15:04

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

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

Nex-Otaku
Сообщения: 825
Зарегистрирован: 2016.07.09, 21:07

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

Сообщение Nex-Otaku » 2017.07.10, 16:30

http://php.net/manual/ru/language.opera ... on.ternary

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

Аватара пользователя
Introvert
Сообщения: 139
Зарегистрирован: 2017.07.04, 13:42
Откуда: Украина, Киев

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

Сообщение Introvert » 2017.07.10, 16:39

Nex-Otaku писал(а):
2017.07.10, 16:30
http://php.net/manual/ru/language.opera ... on.ternary

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

Аватара пользователя
Introvert
Сообщения: 139
Зарегистрирован: 2017.07.04, 13:42
Откуда: Украина, Киев

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

Сообщение Introvert » 2017.07.11, 18:07

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' проверку не выходит
Пишу социальную сеть заявок для фирм.

Nex-Otaku
Сообщения: 825
Зарегистрирован: 2016.07.09, 21:07

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

Сообщение Nex-Otaku » 2017.07.11, 18:14

Ну так заполните массив без этой строки. А потом по условию добавьте "filterModel".

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

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

Аватара пользователя
Introvert
Сообщения: 139
Зарегистрирован: 2017.07.04, 13:42
Откуда: Украина, Киев

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

Сообщение Introvert » 2017.07.11, 18:28

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]);
    }
Пишу социальную сеть заявок для фирм.

Nex-Otaku
Сообщения: 825
Зарегистрирован: 2016.07.09, 21:07

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

Сообщение Nex-Otaku » 2017.07.12, 07:10

Вот так

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

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

Аватара пользователя
Introvert
Сообщения: 139
Зарегистрирован: 2017.07.04, 13:42
Откуда: Украина, Киев

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

Сообщение 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);
Почитайте, что такое переменные и зачем они нужны.
пасиб) не додумался в переменную записать все
Пишу социальную сеть заявок для фирм.

sosnovskiy
Сообщения: 239
Зарегистрирован: 2017.03.28, 20:03

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

Сообщение sosnovskiy » 2017.07.12, 12:19

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);
Почитайте, что такое переменные и зачем они нужны.
пасиб) не додумался в переменную записать все
Страно. Вам один в один выше написали про переменную что бы вы не думали...

Закрыто