首页 > 解决方案 > 如何根据用户类型在 Laravel 中创建路由?

问题描述

基于已经创建的用户模型和表,根据用户类型创建路由的最佳实践是什么?

Usertype 是一个模型和表字段。

盖茨和/或政策是最佳实践吗?

例如:如果经过身份验证的用户是管理员用户,则可以访问某些视图,如果用户是非管理员,则可以访问其他视图。

互联网上有很多链接,但我找不到“那个”。

标签: phplaravelrouteslaravel-6laravel-authorization

解决方案


如果不同的视图有许多共同的元素,那么创建一个视图作为模板可能是个好主意,然后其他视图扩展该模板,将它们的不同部分设置为刀片部分。

{{-- Template --}}
<span>The view</span>
<div>
   @yield('content')
</div>
{{-- One of the views --}}
@extends('template')
@section('content')
   <span>Specific content</span>
@endsection

如果每个视图中呈现的内容完全不同,最好为每个视图设置一个控制器方法。然后,对于一个路由,使用闭包根据您需要的标准来决定调用哪个控制器方法。

Route::get('/products/{product}', function (Product $product) {
    $method = Gate::allows('view_details', $product) ? 'viewDetails' : 'viewGeneralInfo';
    return app('ProductController')
        ->callAction($method, ['product' => $product]);
});

推荐阅读