@elizaveta_kotik

Как сделать чтобы при админе были одни кнопки, при пользователе — другие, и при госте — третьи?

У меня есть данный код, но он не работает. Возможно я вообще неправильно применяю функцию getId()... Как правильно?

a4170641ccef464797a0f4f8fe3a1573.png

main.php
<?php if (Yii::$app->user->isGuest): ?>
                            <li><a href="<?= Url::toRoute(['auth/login']) ?>"><i id="icons" class="fa fa-sign-in"
                                                                                 aria-hidden="true"></i></a></li>
                            <li><a href="<?= Url::toRoute(['auth/signup']) ?>"><i id="icons" class="fa fa-user"
                                                                                  aria-hidden="true"></i></a></li>
                        <?php elseif (!Yii::$app->user->identity->getId(4)): ?>
                            <li>
                                <?= Html::beginForm(['/auth/logout'], 'post')
                                . Html::submitButton(
                                    '' . Yii::$app->user->identity->name . ' <i  class="fa fa-sign-out" aria-hidden="true"></i> ',
                                    ['class' => 'btn btn-link logout', 'style' => "padding-top:10px;"]
                                )
                                . Html::endForm() ?></li>
                        <?php else: ?>
                        <li>
                                    <?= Html::beginForm(['/auth/logout'], 'post')
                                    . Html::submitButton(
                                        '' . Yii::$app->user->identity->name . ' <i  class="fa fa-sign-out" aria-hidden="true"></i> ',
                                        ['class' => 'btn btn-link logout', 'style' => "padding-top:10px;"]
                                    )
                                    . Html::endForm() ?></li>
                        <li>
                                    <?= Html::beginForm(['/admin'], 'post')
                                    . Html::submitButton(
                                        'Перейти к добавлению записей <i class="fa fa-lock" aria-hidden="true"></i>',
                                        ['class' => 'btn btn-link logout', 'style' => "padding-top:10px;"]
                                    )
                                    . Html::endForm() ?></li>
                        <?php endif; ?>


таблица User
de93564a55934182907fa5be4b0ba793.png
  • Вопрос задан
  • 142 просмотра
Решения вопроса 2
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
if (Yii::$app->user->can('admin')) {
   echo $this->render('_admin_btn_block');
} elseif (Yii::$app->user->can('moder')) {
   echo $this->render('_moder_btn_block');
} else {
   echo $this->render('_common_btn_block');
}


С getID можно поступать так, без всяких дополнительных методов, это есть из коробки:
if( Yii::$app->user->id == 4 ) {
echo 'да у этого пользователя id - 4';
}


Ваш метод, кстати, работать не будет. Так как он взращает integer, а не boolean и если уж вы используете конструкцию if( Yii::$app->user->identity->getId(4) ) то метод должен быть таким:
public function getId($id){
  return $id == $this->id;
}
Ответ написан
Комментировать
bitver
@bitver
Yii::$app->user->identity->id === 4

А сам способ проверять на id в коде это ни в какие рамки.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы