首页 > 解决方案 > Laravel @can 方法不适用于所有角色

问题描述

问题

具有“作者”角色的用户看不到@can ... endcan块内的 HTML。

描述
开发 Laravel 包并根据角色限制导航栏。但是,当我尝试仅为具有“作者”角色的用户制作导航元素时,它不起作用。当我用另一个角色替换“作者”时,它可以工作。
也许我的方法太复杂了,欢迎提出其他方法的建议以及提示,我必须在那里寻找解决问题的方法。
我有一个包含三个表的“标准”设置。一个用于用户,一个用于角色,一个用于 role_user 关系(如此处所述。模型中的关系已设置。你可以在这里找到整个项目。提前致谢。

代码

@can('author')
                    <li class="nav-item">
                        <a class="nav-link"
                            href="{{ route('pages.index') }}">{{ __('limplecms::navigation.pages.overview')}}</a>
                    </li>
                    @endcan
                    @canany(['admin', 'editor'])
                    <li class="nav-item dropdown">
                        <a class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown"
                            aria-expanded="false">
                            {{ __('limplecms::navigation.pages')}}
                        </a>
                        <div class="dropdown-menu" aria-labelledby="navbarDropdown">
                            <a class="dropdown-item" href="{{ route('pages.index') }}">
                                {{__('limplecms::navigation.pages.overview')}}
                            </a>
                            <div class="dropdown-divider"></div>
                            <a class="dropdown-item" href="{{ route('pages.create') }}">
                                {{__('limplecms::navigation.pages.create')}}
                            </a>
                        </div>
                    </li>
                    @endcanany
                    @can('admin')
                    <li class="nav-item dropdown">
                        <a class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown"
                            aria-expanded="false">
                            {{ __('limplecms::navigation.user.management')}}
                        </a>
                        <div class="dropdown-menu" aria-labelledby="navbarDropdown">
                            <a class="dropdown-item" href="{{ route('users.index') }}">
                                {{__('limplecms::navigation.users.overview')}}
                            </a>
                            <div class="dropdown-divider"></div>
                            <a class="dropdown-item" href="{{ route('users.create') }}">
                                {{__('limplecms::navigation.users.create')}}
                            </a>
                        </div>
                    </li>
                    @endcan

标签: laravellaravel-blade

解决方案


推荐阅读