LoginSignup
2
0

More than 5 years have passed since last update.

Laravelを使ってWebページを表示する基本的な手順(失敗編)

Posted at

この記事を書いた背景

ララ帳の20まで終了してそれっぽいWebページを表示することができるようになったが、いざそこまでの知識でwebページを表示しようと思ったら、ハマってしまったので、とりあえず手順だけまとめて書きます。
後日、”ちゃんと動作する”方法を書き、何が間違っていたのか比べるための記事。

簡単に、手順

  1. マイグレーションファイルの作成とマイグレーション
  2. モデルの作成と、マスアサイメント
  3. コントローラーの作成
  4. ビューの作成
  5. ルーティングの設定

マイグレーションファイルの作成とマイグレーション

マイグレーションファイルの作成

php artisan make:migration create_todos_table --create=ToDos

create_todos_table.php

use IlluminateDatabaseSchemaBlueprint;
use IlluminateDatabaseMigrationsMigration;

class CreateArticlesTable extends Migration {

      public function up()
    {
        Schema::create('ToDos', function (Blueprint $table) {
            $table->increments('id');
            $table->string('title');
            $table->text('body');
            $table->timestamps();

        });
    }
}

マイグレーション

$ php artisan migrate

ToDo.php(モデル)の作成とマスアサイメントの設定

モデルの作成

php artisan make:model ToDo

マスアサイメントの設定

ToDo.php



class ToDo extends Model
{
    //マスアサイメントの設定
    protected $fillable = ['title', 'body'];
}

ToDoControllerの作成

$ php artisan make:controller ToDoController

ToDoController.php
namespace App\Http\Controllers;

class ToDoController extends Controller
{
    //
    public function index()
    {
      $todos = ToDo::all();
      return view('todos.index', compact('todos'));
    }
}

ビューの作成

layout.blade.phpの作成

表示するWebページのためのテンプレート。
このテンプレートを作成することで、ページごとにhtmlを書かなくてよくなる。

<!DOCTYPE HTML>
<html lang="ja">
<head>
  <meta charset="utf-8">
  <title>ToDO List</title>


//ブートストラップのcssファイルを読み込む
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
</head>

<body>

  <div class="container">
    @yield('content')
  </div>

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
</body>
</html>

index.blade.php

todoリスト一覧を表示するページ。

@extends('layout')

@section('content')
<h1>My ToDo List</h1>
<hr/>

  @foreach($todos as $todo)
    <todos>
      <h2>
        <a href="{{ url('todos', $todo->id) }}">
          {{ $todo->title }}
        </a>
      </h2>

      <div class="body">
        {{ $todo->body }}
      </div>
    </todos>
    @endforeach
@endsection

一覧ページへのルーティングを設定

Route::get('myList', ToDoController@index);

  • http://localhost/myListにアクセスした時に、ToDoControllerのindexメソッドが呼ばれる。
  • indexメソッドではヘルパー関数のviewメソッドにより、index.blade.php$todosに格納されているデータ一覧が配列として渡される。(compact関数によって)
  • ビューでは、foreach文により配列が取り出され、一覧として表示される。

はずだったのだが、

エラーでページが表示されない。

2
0
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
2
0