Laravel学習帳

Laravel5.2の学習帳です。開発環境はXAMPP for Windows 5.6.19 / 本番環境はさくらサーバー(スタンダード)

基礎知識

リクエストについて

WEBの開発においてまず最初に覚えるのがフォームによる値の受け渡し処理(リクエスト)です。

当サイトでも最初にLaravelで作成するプログラムをリクエスト処理からはじめます。

 

使い方

例えば、HTMLのフォームで以下のよに名前を入力するフォームがあるとします。

名前:<input type="text" name="username" />
:

これをPOST送信で受け取る場合はコントローラではこのようになります。

以下、ポイントで説明していきます。

まずRequestファサードをDIします。

DIについてわからなければコチラ

public function confirm(Request $request)
{
:
}

 
個別に受け取る場合はRequestファサードのinputメソッドを使います。

:
$username = Request::input('username');
:

 
すべてのリクエストデータを受け取る場合allメソッドを使います。

:
$data = Request::all();
:

 
ビューにはwithメソッドを使って変数または配列を渡します。

:
return view('request.confirm')->with($data);
:

 
ビューファイルでは以下のようになります。

名前:{{$username}}

 
Laravelで行うリクエスト処理はざっとこんな感じです。

では、実際にチュートリアルを写経して理解を深めていきましょう。

 

チュートリアル

お問い合わせフォームを確認画面まで作成。

手順

1)ビューの作成
  1.入力フォーム
  2.確認画面
2)コントローラの作成
3)ルーティング
4)動作確認

 

1)ビューの作成

1.入力フォーム

Laravelのビューファイルを格納するディレクトリにrequestディレクトリを作成して入力フォームと確認画面を作成します。

まずは入力フォームから。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xml:lang="ja" lang="ja">
<head>
  <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
  <title>フォームのサンプル(入力画面)</title>
  <style>
  dl { width:430px; }
  dt { float:left; }
  dd { margin-left:130px; }
  </style>
</head>
<body>
<h1>フォームサンプル(入力画面)</h1>
<p>アンケートにご協力下さい</p>

<form action="{{ route('request.confirm') }}" method="post">
  <dl>
  <dt>名前:</dt>
  <dd> <input type="text" name="username" /> </dd>
  </dl>

  <dl>
  <dt>Email:</dt>
  <dd> <input type="text" name="mail" /> </dd>
  </dl>

  <dl>
  <dt>年齢:</dt>
  <dd> <input type="text" name="age" /> </dd>
  </dl>

  <dl>
  <dt>ご意見ご感想:</dt>
  <dd>
  <textarea name="opinion" rows="8" cols="40"></textarea>
  </dd>

  <div><input type="submit" name="button1" value="送信" /></div>
  <input type="hidden" name="_token" value="{{ csrf_token() }}">
</form>

</body>
</html>
【 注意 】
LaravelでPOST送信処理を行う場合は必ずCSRF対策が必要です。

<input type="hidden" name="_token" value="{{ csrf_token() }}">

 

2.確認画面

次に確認画面。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xml:lang="ja" lang="ja">

<head>
  <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
  <title>フォームのサンプル(確認画面)</title>
  <style>
  dl { width:430px; }
  dt { float:left; }
  dd { margin-left:130px; }
  </style>
</head>
<body>
<h1>フォームサンプル(確認画面)</h1>
<p>アンケートにご協力下さい</p>

<dl>
  <dt>名前:</dt>
  <dd>{{$username}}</dd>
</dl>

<dl>
  <dt>Email:</dt>
  <dd>{{$mail}}</dd>
</dl>

<dl>
  <dt>年齢:</dt>
  <dd>{{$age}}歳</dd>
</dl>

<dl>
  <dt>ご意見ご感想:</dt>
  <dd>{{$opinion}}</dd>
</dl>

</body>
</html>

 

2)コントローラの作成

artisanコマンドでスケルトンを作成。

php artisan make:controller RequDemoController

自動生成されたスケルトンを編集。

:
class RequDemoController extends Controller
{
  public function getIndex()
  {
  return view('request.index');
  }

  public function confirm(Request $request)
  {
  $data = $request->all();
  return view('request.confirm')->with($data);
  }
}

 

3)ルーティング

# 入力画面
Route::get('request/', [
  'uses' => 'RequDemoController@getIndex',
  'as' => 'request.index'
]);

# 確認画面
Route::post('request/confirm', [
  'uses' => 'RequDemoController@confirm',
  'as' => 'request.confirm'
]);

 

4)動作確認

http://{ホスト}/request にアクセス

以上です。

 

-基礎知識