MENU
カタログクリップ
本ページはプロモーションを含みます。

Laravel 5.5 入門として「基本のタスクリスト」を作成する [その2]

2020 6/28
広告
コンピューター
2017年11月14日2020年6月28日

Laravelに入門する方を対象に、「基本のタスクリスト」チュートリアルをLaravel 5.5で行う方法を順を追って紹介しています。

この記事は、次の記事に続く2つ目の記事です。

Laravel 5.5 入門として「基本のタスクリスト」を作成する [その1]

前回次の作業を行い、作成したところまでの動作をhttpサーバを起動して確認しました。

  • アプリケーションで使用する空のデータベースhomesteadを作成
  • タスクを保存するTasksテーブルをマイグレーションファイルに定義
  • マイグレーション
  • 空のTaskモデルを定義
  • 3つの空のルートを作成

次の作業へ進みましょう。

目次

ビューの表示

空のルートの中身を作成していきます。

まずは、’/’にアクセスされた場合に、全タスクをリスト表示するようにHTMLテンプレートを作成します。

また、そのテンプレートには新しいタスクを追加するフォームも含めることにします。

LaravelのHTMLテンプレートは、resources/views/以下に置きます。

次のようにroute (routes/web.php) にviewヘルパを使用することで、viewsディレクトリに置かれたHTMLテンプレートを表示することができます。

Route::get('/', function () {
  return view('tasks');
});

この場合は、resources/views/tasks.blade.phpが読み込まれます。

ビューのレイアウト

Laravelでは、Bladeというテンプレートエンジンが用意されています。

他のPHPテンプレートエンジンと異なり、ビューの中にphpを直接記述します。

 

ビューファイルの拡張子が.blade.phpの場合に、Bladeテンプレートエンジンが使用されます。

まずはレイアウトの共通部分を、resources/views/layouts/app.blade.phpに用意しましょう。ナビバーを共通部分とすることにします。

次のように、layouts/app.blade.phpを作成します。

<!DOCTYPE html>
<html lang="en">
      <head>
	  <title>Laravel Quickstart - Basic</title>

	  <!-- Fonts -->
	  <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.4.0/css/font-awesome.min.css" rel='stylesheet' type='text/css'>

	  <!-- Styles -->
	  <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">
      </head>

      <body>

	  <nav class="navbar navbar-default">
	      <div class="container">
		  <!-- navbar  -->
		  <div class="navbar-header">
		      <a class="navbar-brand" href="{{ url('/')  }}">
			  Task List
		      </a>
		  </div>
	      </div>
	  </nav>


	  @yield('content')

	  <!-- JavaScripts -->
	  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
      </body>
</html>

この例ではcssフレームワークとしてbootstrapを使用しています。もちろんBulmaなどの他のCSSを使用しても構いません。

ここで、@yield(‘content’)は、Bladeのディレクティブです。この部分に、子ページの内容が挿入されます。

 

次に、子ページとして全タスクをリスト表示するtasks.blade.phpを次のように作成します。

@extends('layouts.app')
@section('content')
  <div class="container">
    <div class="col-sm-offset-2 col-sm-8">
	<div class="panel panel-default">
	    <div class="panel-heading">
		New Task
	    </div>

	    <div class="panel-body">
		<!-- Display Validation Errors -->
		@include('common.errors')

		<!-- New Task Form -->
		<form action="{{ url('task')  }}" method="POST" class="form-horizontal">
		    {{ csrf_field() }}

		    <!-- Task Name  -->
		    <div class="form-group">
			<label for="task-name" class="col-sm-3 control-label">Task</label>
			<div class="col-sm-6">
			    <input type="text" name="name" id="task-name" class="form-control">
			</div>
		    </div>

		    <!-- Add Task Button -->
		    <div class="form-group">
			<div class="col-sm-offset-3 col-sm-6">
			    <button type="submit" class="btn btn-default">
				<i class="fa fa-btn fa-plus"></i>Add Task
			    </button>
			</div>
		    </div>
		</form>
	    </div>
	</div>

	<!-- TODO: Current Tasks -->
    </div>
  </div>
@endsection

 

冒頭の@extends(‘layouts.app’)によって、親ページ layouts/app.blade.phpが呼ばれます。

そして、親ページapp.blade.php の @yield(‘content’) の位置に、子ページ tasks.blade.phpの@section(‘content’)から、@endsectionまでの内容が挿入されます。

つまり、’/’ルートからresources/views/tasks.blade.phpが呼ばれると、layout/app.blade.php に tasks.blade.php が挿入されて表示されることになります。

 

@includeディレクティブは、他のbladeビューを取り込みます。

ここでは@include(‘common.errors’)を使用しています。これにより、入力値エラー表示をcommon.errorsに共通化します。

common.errorsは後ほど作成します。

 

波括弧{{ }}で囲まれたデータは、phpのhtmlentities関数を通して表示されます。

その他Bladeのディレクティブについては、こちらのページを参考にしてください。

タスクの追加処理

現状では、タスクの追加ボタンを押すと、空の/taskページに飛ばされるだけで、タスクの追加処理が行われません。

ここで、タスクをデータベースに追加する/taskルートのコードを追加しましょう。

 

タスク名(name)のフィールドを一つ持つフォームを作成します。

nameの条件は、入力が必須で、255文字以下であることとします。

条件を満たさない場合は、’/’にリダイレクトし、エラー内容をセッションにフラッシュデータとして保存します。

フラッシュデータとは、次のリクエストの処理が終わった後にlaravelによって消されるセッション情報です。次のリクエスト処理まで持ち越したい情報を保存したいときに使います。

 

routes/web.phpの/taskルートに次のようにコードを追加します。


Route::post('/task', function (Request $request) {
    $validator = Validator::make($request->all(), [
        'name' => 'required|max:255',
    ]);

    if($validator->fails()){
        return redirect('/')
            ->withInput()
            ->withErrors($validator);
    }

    //TODO: Add New Task
    
});

functionの引数がRequest $requestとなっています。このように記述するとサービスプロバイダによって、$requestに現在のHTTPリクエストインスタンスが代入されます。

Requestクラスの解説はこちらのページです。

 

Validator::makeメソッドの第1引数は、バリデーションを行うデータです。第2引数はそのデータに適用するバリデーションルールです。

$validator->fails() で入力値が無効か確認しています。

無効であった場合は、エラーを保存して、’/’ルートを返します。

->withErrors($validator)で、$validatorインスタンスのエラーをセッションに保存します。すると、全てのビューから$errors変数としてアクセスできるようになります。

->withInput()は、全ての入力内容をセッションに保存します。

バリデーションについてはこちらのページの「バリデータの生成」項を参考にしてください。

 

タスクの作成部は、ここではTODOとして残しておきます。

エラー表示

エラーを表示するためにtask.blade.phpに@include(‘common.errors’)ディレクティブを記述していました。

resources/views/common/errors.blade.phpに、次のように記述しましょう。

@if (count($errors) > 0)
    <!-- Form Error List -->
    <div class="alert alert-danger">
        <strong>Whoops! Something went wrong!</strong>

        <br><br>

        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

@で始まる行は、Bladeのディレクティブです。

$errorsが一つ以上存在する場合に、エラーをリスト表示します。

ここまでのまとめ

ここまでで次の作業を行いました。

  • ‘/’ルートで表示されるページテンプレートを指定(tasks.blade.php)。
  • ページテンプレートを作成。タスク入力フォームを追加。
  • タスク追加ルート/taskの作成。入力値の検査とエラー処理を追加。
  • エラー表示部を作成。

以上、Laravel 5.5 入門として「基本のタスクリスト」を作成する [その2]でした。

 

次の記事へ続きます。

Laravel 5.5 入門として「基本のタスクリスト」を作成する [その3]

PHPフレームワーク Laravel入門
  • 掌田津耶乃 (著)
  • 秀和システム
  • 価格¥1,850(2025/05/14 16:32時点)
  • Amazonで口コミ・レビューを見る
Amazonで探す楽天で探すYahooで探す

 

コンピューター
highlightjs

関連記事

  • Speed Wi-Fi DOCK 5G 01の実機使用レビュー。
    2025年4月16日
  • AXE5400VとAX80Vの3つの違い。[Wi-Fiルーター]
    2025年4月7日
  • Archer AXE5400とAX80の3つの違い。[Wi-Fiルーター]
    2025年4月7日
  • Archer AXE5400とAX5400の3つの違い。[Wi-Fiルーター]
    2025年4月6日
  • Archer AX3000とAX1800の2つの違い。[Wi-Fiルーター]
    2025年4月6日
  • Archer AX3000VとAX23Vの2つの違い。[Wi-Fiルーター]
    2025年4月5日
  • Archer AX80とAX5400の3つの違い。[Wi-Fiルーター]
    2025年4月5日
  • Archer AX80VとAX73Vの3つの違い。[Wi-Fiルーター]
    2025年4月5日
カテゴリー
  • コンピューター
    • gnuplot & eps
    • mac
    • matplotlib
    • wordpress
  • ホーム・家電
    • アイロン
    • オーディオ
    • オーラルケア
      • ジェットウォッシャー
      • 音波振動歯ブラシ
    • カメラ
    • カー用品
    • クリーナー
    • テレビ、レコーダー
    • ドアホン
    • メンズ美容家電
      • ラムダッシュ
    • ルンバ
    • 一覧比較
    • 工具
    • 浄水器
    • 温水洗浄便座
    • 炊飯器
    • 空気清浄機・加除湿機
    • 空調・季節家電
    • 美容家電
      • フェイスケア
      • ヘアケア
      • ボディーケア
    • 血圧計
    • 調理器具
    • 電子レンジ
  • 健康
  • 家事
    • パン
    • 料理
    • 育児
    • 食品
      • おせち
      • コーヒー
  • 書籍
  • 知識
  • 趣味
    • ペン字
    • ロードバイク・クロスバイク
    • 車
    • 鉄道模型
    • 電子工作
サイト内検索
最近の投稿
  • モナークHGとモナークM7の4つの違い。[ニコン双眼鏡]
  • ニコン モナーク M7とM5の4つの違い。[双眼鏡]
  • Speed Wi-Fi DOCK 5G 01の実機使用レビュー。
  • RZ-760、GT-760、ST-760の違い。[ガス缶・CB缶]
  • RZ-730、RZ-730S、RZ-730SBK、RZ-730SWH、ST-Y450の違い。
  • TC-EA35WとTC-E123SBKの違いを比較。[スティッククリーナー]
  1. ホーム
  2. コンピューター
  3. Laravel 5.5 入門として「基本のタスクリスト」を作成する [その2]
  • ホーム
  • プライバシーポリシー

© カタログクリップ
contact@beiznotes.org

目次