5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【PHP】Laravel 学習メモ / 簡易アプリで流れを掴む2(受け取ったデータを計算して完成まで)

Last updated at Posted at 2019-11-07

##前回まで
前回までで画面を表示させるところまで完成しました。
【PHP】Laravel学習メモ / 簡易アプリで流れを掴む1(表示まで)

##今回で完成
今回は、入力されたデータ(米ドル)を受け取り、日本円に換算して表示するところまで実装して、完成としたいと思います。為替は、今回1ドル=110円として計算します。

##完成動画
66f8e35a38f4ce0d1865297836b5011e.gif

コードを追ってみましょう。
##ルーティング
ルーティングは前回で終わっているので、そのまま使います。
本来Webサービス、アプリではもっと多くのルーティングを設定しますが、今回のアプリはトップページのみで動かす為、1行のみです。

routes/web.php

routes/web.php
Route::get('/', function () {
    return view('welcome');
});

Route::get('/calculate', 'CalculateController@getcalc');

##コントローラー、ビュー

###コントローラー
app/Http/Controllers/CalculateController.php

app/Http/Controllers/CalculateController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class CalculateController extends Controller
{
  public function getCalc(Request $request){

    $data['exchange'] = $request->input('usdoller');
    $data['jpyen'] = ($data['exchange'] * 110);

    return view('calculate.num', $data);
    //
  }
}

###ビュー
resources / views /calculate / num.blade.php

resources/views/calculate/num.blade.php

<head>
    <title>計算アプリ</title>
</head>
<body>
    <h1>計算アプリです</h1>
    <h2>米ドルを入力すれば日本円に換算します</h2>
    <div>
        <form>
            <input type="text" name="usdoller" placeholder="$0" style="height: 30px; width: 120px;">
            <button type="submit">円に換算</button>
        </form>
        <p>日本円で{{ number_format($jpyen)}}円です</p>
    </div>
</body>
</html>

#####では、1つずつ見ていきます。

###コントローラー
まず、コントローラーを順に見ていくと、viewから'usdoller'というデータを受け取っています。後ほどビューで見ますが、この中にはユーザーが入力した米ドルの金額が入っています。
その受け取ったデータを$data['exchange']に代入しています。

app / Http / Controllers / CalculateController.php

app/Http/Controllers/CalculateController.php

$data['exchange'] = $request->input('usdoller');

そして、'jpyen'にはusdollerに110(為替レート)を掛けたものを代入しています。


$data['jpyen'] = ($data['exchange'] * 110);

最後に、ビューに$dataを一緒に渡します。


return view('calculate.num', $data);

2つのデータを受け取っていますので、$data[ ]の中身は2つ入っています。

$data['exchange', 'jpyen']

ビューで表示したいのは、計算結果が入っている'jpyen'です。
'jpyen'を表示させるようにしましょう。

では、ビューを見てみます。
###ビュー
まず、入力欄とボタンを実装しています。ここは特に変わったことはしていません。ここで入力された金額が、コントローラーの$request->input()に渡されます。

resources / views /calculate / num.blade.php

resources/views/calculate/num.blade.php


<form>
      <input type="text" name="usdoller" placeholder="$0" style="height: 30px; width: 120px;">
            <button type="submit">円に換算</button>
</form>

コントローラーから渡されたデータを表示します。bladeファイルでは、{{ $データ }}で受け取ったデータを表示させることができます。number_formatは、数字の位をカンマで分けてくれる関数です。

<p>日本円で{{ number_format($jpyen)}}円です</p>

以上で完成です。
66f8e35a38f4ce0d1865297836b5011e.gif

##データの流れまとめ
・ビューのinputで入力されたデータはsubmitでコントローラーへ渡す。

・コントローラーでは$request->input()でデータを受け取る。

・受け取ったデータを、$data[]に代入する。

・為替の計算をし、return view(ビューのファイル, $data);でビューに渡す。

・ビューでは{{ $データ }}でデータを表示する。

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?