Laravelで条件分岐に応じて異なるページを表示する方法

入力フォームに入れられた数値に応じて次のページに表示される内容が異なるような機能を実装します。

OS:Mac
開発環境：Cloud9
Laravelバージョン：6.19.1

```web.php
// 中略

Route::group(['middleware' => ['auth']], function () {
  　Route::post('results', 'UsersController@result')->name('results.results');
});
```

Routeは上のようになります。コントローラーではresultアクションを後ほど使います。
’results.results'はViewファイルのFormで使います。

```UsersController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\User; // 追加

class UsersController extends Controller
{
    public function result()
    {
        $mbgl = $_POST['mbgl'];
        $ogtt = $_POST['ogtt'];
        $hba1c = $_POST['hba1c'];
        
        return view ('results.results', [
            'mbgl' => $mbgl,
            'ogtt' => $ogtt,
            'hba1c' => $hba1c,
            ]);
    }
}
```

UsersController.phpでは入力された数値を変数にするようにします。

```ditermination.blade.php

@extends('layouts.app')

@section('content')
@if(Auth::check())
    <div class="center">
        <div class="row">
            <div class="col-sm-6 offset-sm-3">
                {!! Form::open(['route' => 'results.results', $user->id]) !!}
                <h2>1. 朝の空腹時血糖値(mg/dL)</h2>
                <div class="form-group" name="mbgl">
                    {!! Form::text('mbgl', old('mbgl'), ['class' => 'form-control']) !!}
                </div>
                <h2>2. 75g経口ブドウ糖負荷試験(mg/dL)</h2>
                <div class="form-group" name="ogtt">
                    {!! Form::text('ogtt', old('ogtt'), ['class' => 'form-control']) !!}
                </div>
                <h2>3. HbA1c(％)</h2>
                <div class="form-group" name="hba1c">
                    {!! Form::text('hba1c', old('hba1c'), ['class' => 'form-control']) !!}
                </div>
                <div class="form-group"> 
                    {!! Form::submit('結果', ['class' => 'btn btn-primary btn-block']) !!}
                </div>
                {!! Form::close() !!}
            </div>
        </div>
    </div>
@endif
@endsection

```

入力フォームのページはこのような感じになります。$user->idについては画像にはないですがmigrationファイルで書いておかなければなりません。layouts.appでも同様に画像としては載せないですが、htmlを定義しておいてください。

```results/results.blade.php

@extends('layouts.app')

@section('content')
    @if($hba1c >= 6.5)
        @include('results.high_hba1c')
    @else
        @include('results.low_hba1c')
    @endif    
@endsection

```
ここから条件分岐を本格的に書いていきます。まずは大きく２つに分けてみました。ちなみに＄hba１cの値は上から3つ目のフォームに該当します。


```results/high_hba1c.blade.php

<div class="center">
@if($mbgl>=126 && $ogtt>=200)
    <div class="a">糖尿病です</div>
@elseif($mbgl>=126 || $ogtt>=200)
    <div class="a">糖尿病です</div>
@else
    <div class="b">糖尿病の疑いがあります</div>
@endif
</div>
```
```results/low_hba1c.blade.php

<div class="center">
@if($mbgl>=126 && $ogtt>=200)
    <div class="b">糖尿病の疑いがあります</div>
@elseif($mbgl>=126 || $ogtt>=200)
    <div class="b">糖尿病の疑いがあります</div>
@elseif($mbgl<110 && $ogtt<140)
    <div class="c">糖尿病ではありません</div>
@elseif($mbgl<110 || $ogtt<140)
    <div class="c">糖尿病ではありません</div>
@else
    <div class="d">糖尿病に近いです</div>
@endif
</div>
```
条件分岐はこれで以上となります。実際の糖尿病の判定基準はいろいろあり、これはあくまで一例です。
条件分岐がかなり複雑でわかりにくいと感じた方もおられると思いますが、書き方のパターンだけ理解していれば十分です笑
特にUsersController.phpとViewsのファイルの書き方が重要になるかと思います。