この記事を書いた背景
ララ帳の20まで終了してそれっぽいWebページを表示することができるようになったが、いざそこまでの知識でwebページを表示しようと思ったら、ハマってしまったので、とりあえず手順だけまとめて書きます。
後日、”ちゃんと動作する”方法を書き、何が間違っていたのか比べるための記事。
簡単に、手順
- マイグレーションファイルの作成とマイグレーション
- モデルの作成と、マスアサイメント
- コントローラーの作成
- ビューの作成
- ルーティングの設定
マイグレーションファイルの作成とマイグレーション
マイグレーションファイルの作成
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文により配列が取り出され、一覧として表示される。
はずだったのだが、
エラーでページが表示されない。