# 12. Blade if/else/unless/or 这一节来讲讲 `blade` 这个 view engine 的一些关于判断的指令。 ## 1. if 首先在 action 加一个变量,找到 `app/Http/PagesController.php` 文件,修改其内容如下: ``` // app/Http/PagesController.php <?php ... class PagesController extends Controller { ... public function blade() { $gender = 'femffffale'; $text = 'Hello there!'; return view('blade.bladetest', compact('gender', 'text')); } } ``` 然后我们在 view中来判断这个 `$gender` 变量的内容。 找到 `resources/views/blade/bladetest.blade.php` 文件,修改其内容如下: ``` ... @section('body') <div class="jumbotron"> <h1 class="display-3"> Your gender is @if($gender == 'male') male @elseif($gender == 'female') female @else unknown @endif </h1> </div> <div class="row marketing"> ... </div> @endsection ``` 页面上会这么显示: ![](https://box.kancloud.cn/9e4b210157dcb473cf4bf752a79d6b3b_2462x1040.png) 结合上面的 `@if` 指令的判断,因为 `$gender` 的值为 `femffffale`,即不是 `male`,也不是 `female`,所以最后显示 `unknown`。 可以分别改成 `male` 或 `female` 来试试效果。 很容易理解。 ## 2. unless `unless` 其实 `!if`,`if` 的相反的意思。 我们来个例子说明一下。 ``` ... @section('body') <div class="jumbotron"> <h1 class="display-3"> ... </h1> <p class="lead"> @unless(empty($text)) {{ $text }} @endunless @if(!empty($text)) {{ $text }} @endif </p> </div> <div class="row marketing"> ... </div> @endsection ``` 最后显示: ![](https://box.kancloud.cn/2773a4c75683c8ff90caefb40094393b_2356x1112.png) ## 3. isset 和 or `isset` 是判断变量是否存在。 ``` <p>{{ isset($variableDoesNotExist) ? $variableDoesNotExist : 'The variable does not exist' }}</p> ``` 效果如下: ![](https://box.kancloud.cn/3206ae8218cba35ce7472d726afe5273_2306x1072.png) 它也可以用 `or` 来写,结果一样的。 ``` <p>{{ $variableDoesNotExist or 'This really does not exist' }}</p> ``` 完结。 下一篇:[Ruby 程序员学习 laravel 框架笔记 (13)-factories, faker and seeding](https://www.rails365.net/articles/ruby-cheng-xu-yuan-xue-xi-laravel-kuang-jia-bi-ji-13-factories-faker-and)