# @auth@endauth實現部分頁面權限 #### 好用的Blade語法實例01 laravel的blade語法中,有一些語法可以選擇隱藏或者展示程式碼,讓一些人看得到一些人看不到。 主要是: :::success `@auth`登入才能看到這行字 `@endauth` ::: 跟 :::success `@guest`不用登入就能看到這行字`@endguest` ::: 進階的作法是 :::info `@auth`登入才看得到這行字`@else`不用登入就能看到這行,但是登入後看不到`@endauth` ::: 如果想要設置更複雜的篩選條件可以用下面這個 :::warning `@if(條件)`符合條件才看得到`@endif` ::: 最近剛好在研究使用者的多層權限,我在使用者的user資料表中添加了一個欄位`role`,當中用數字1~4代表不同的權限階層,假設我只想讓某個權限階層的人,比如階層1,只有這個階層可以看到某段程式碼,像下面這樣: ```php= @if (Auth::user()->role == '1') <div class="card-footer text-muted"> <a href="/product/edit/{{$product->id}}" class="btn btn-warning"><i class="fas fa-edit"></i></a> <a href="/product/delete/{{$product->id}}" class="btn btn-danger"><i class="fas fa-trash-alt"></i></a> </div> @endif ``` :::info 上面的意思是,當這個帳號的權限是1的時候(使用者欄位role=1),他才能看到這一段被包起來的程式碼。 ::: ![](https://i.imgur.com/AvNOapW.png)![](https://i.imgur.com/g9Z72cD.png) :::info 上面左側的圖(手機版是上圖),是權限不符合的人看到的樣子。 右側的圖(手機版的下圖)是權限符合的人看到的樣子。 ::: :::danger 不過這個語法在遇到訪客(未登入者)的時候,會出現報錯,後來找到了解法。 [報錯續集跟...解法?(點我)](https://hackmd.io/@codehome/S14DgByat) ::: ###### tags: `laravel` `laravel.7` `blade`