laravelでシンプルなformを作りMySQLに保存した

tl;dr;

極限まで削り、ただtextを受け取りDBに格納するだけの処理。
laravelでシンプルなformを作りMySQLに保存した。(ただの備忘録)

view(入力画面)

 ソースは以下の通り。

<head>
  <meta charset="utf-8">
  <!-- css をあてる際は以下のようにcssを読み込む-->
  <link rel="stylesheet" href="/css/style.css">
</head>

<form method="post" action="{{ url('/add') }}">
    {{ csrf_field() }}
    <p>
      <input type="text" name="title" placeholder="enter title">
    </p>
    <p>
      <textarea name="body" placeholder="enter body"></textarea>
    </p>
    <p>
      <input type="submit" value="Add">
    </p>
  </form>

読み込むcss。今回は以下のようにした。

  input[type="text"], textarea {
    box-sizing: border-box;
    width: 500px;
    padding: 5px;
  }
  
  textarea {
    height: 100px;
  }

router

view(入力画面)と、そこからsubmitする宛先(post)を以下の通り設定した。

両方とも PostsController  クラスを呼び、それぞれのメソッドを紐付けるようにした。

<?php
Route::get('/information', 'PostsController@create');
Route::post('/add', 'PostsController@add');

 

Model

データベースに保存するハコ。

`protected fillable`  として、DBへ保存できるようにした。

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    //
    protected $fillable = ['title', 'body'];
}

Controllers

クライアントからの Post  は request 型で送られてくる。
そのため、それぞれ適宜抜き出し、Modelに入れ、`save()`  することでDBへ保存されるようにした。

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;

use App\Post;


class PostsController extends Controller
{
    public function create() {
        return view('information.create');
      }

      // request型で送られてくる
    public function add(Request $request) {

        $post = new Post();
        $post->title = $request->title;
        $post->body = $request->body;
        $post->save();

        return redirect('/information');
    }

}

以上。

動作確認

無事登録が完了

 

laravel の実践向け書籍