はじめに
Laravel Adminで簡単にCRUDを作成してしまうと実際のユーザー側の画面の作成イメージがわかないので、コントローラーやフォームを作成して登録フォームを作成してみる
モデルの作成やデータベースの接続は過去の記事を参照 px-wing.hatenablog.com
コントローラーの作成
- 次のコマンドを使用してフォームコントローラーを作成します。
$ php artisan make:controller CategoryController
- コントローラー側のコード
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Category;
class CategoryController extends Controller
{
public function index()
{
return view('add-category-form');
}
public function store(Request $request)
{
$category = new Category;
$category->name = $request->name;
$category->save();
return redirect('add-category-form')->with('status', 'カテゴリの登録が完了致しました。');
}
}
フォームのブレードファイルを作成する
- カテゴリを追加するために、resources/viewsディレクトリ内にadd-category-form.blade.phpという名前の新しいブレードビューファイルを作成します。 次に、次のhtmlフォームコードをadd-category-form.blade.phpに追加します。
<!DOCTYPE html>
<html>
<head>
<title>カテゴリ登録フォーム</title>
<meta name="csrf-token" content="{{ csrf_token() }}">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body>
<div class="container mt-4">
@if(session('status'))
<div class="alert alert-success">
{{ session('status') }}
</div>
@endif
<div class="card">
<div class="card-header text-center font-weight-bold">
カテゴリ登録フォーム
</div>
<div class="card-body">
<form name="add-blog-post-form" id="add-blog-post-form" method="post" action="{{url('store-form')}}">
@csrf
<div class="form-group">
<label for="exampleInputEmail1">カテゴリ名</label>
<input type="text" id="name" name="name" class="form-control" required="">
</div>
<button type="submit" class="btn btn-primary">登録</button>
</form>
</div>
</div>
</div>
</body>
</html>
ルーティングの設定
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\CategoryController;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
return view('welcome');
});
Route::get('/add-category-form', [CategoryController::class, 'index']);
Route::post('/store-form', [CategoryController::class, 'store']);
実際の画面
