Loading... 在blade视图中进行一些较长的`@if()`判断,尤其是该判断又经常用到时,会让我们的blade视图变得臃肿难看,好消息是,在laravel 5.5里,我们可以自定义一些常用的if判断,将其定义成简洁的blade标签。 ```php @if (auth()->check() && auth()->user()->isSubscribed()) <p>Subscribed</p> @else <p>Not Subscribed</p> @endif ``` 就可以写成: ```php @subscribed <p>Subscribed</p> @else <p>Not Subscribed</p> @endsubscribed ``` 那么,要创建这样的一个`@subscribe`blade标签,需要在我们的`AppServiceProvider`里面去定义一下: ```php [...] use Illuminate\Support\Facades\Blade; class AppServiceProvider extends ServiceProvider { [...] public function boot() { Blade::if('subscribed', function () { return auth()->check() && auth()->user()->isSubscribed(); }); } [...] } ``` 有时候我们的判断里需要传递参数,比如这样: ```php @if (auth()->check() && auth()->user()->isFollowing($user->id)) ``` 这个时候在`Blade::if()`的回调函数里传入参数即可: ```php Blade::if('following', function (User $user) { return auth()->check() && auth()->user()->isFollowing($user->id) }); ``` 然后实际使用中可以这样来调用: ```php @following($user) <p>Following</p> @else <p>Not Following</p> @endfollowing ``` 当然这个之前的版本里也是可以自定义的,不然我们之前[Entrust课程](https://pilishen.com/course/4)里涉及的`@role @ability`这些都怎么来的? Last modification:March 7, 2023 © Allow specification reprint Like 如果觉得我的文章对你有用,请随意赞赏