ユーザ用ツール

サイト用ツール


laravel:form_example

文書の過去の版を表示しています。


フォームページを作成する

プロジェクトルートのroutes/web.phpに以下のルートを記載する。

Route::get('/form', 'App\Http\Controllers\FormController@index');
Route::post('/submit', 'App\Http\Controllers\FormController@submit');

これで、/formにアクセスするとFormControllerのindexメソッドが呼び出され、 /submitにアクセスするとFormControllerのsubmitメソッドが呼び出されるようになる。

コントローラーの作成

FormControllerを作成してindexメソッドを定義する。

php artisan make:controller FormController

これで、app/Http/ControllersディレクトリにFormController.phpが作成される。

<?php
 
namespace App\Http\Controllers;
 
use Illuminate\Http\Request;
 
class FormController extends Controller
{
  public function index()
  {
    return view('form')
  }
 
  public submit(Request $request)
    $name = $request->input('name');
    $email = $request->input('email');
 
    // フォームの入力内容を次のビューに渡す
    return view('submit', [
      'name' => $name,
      'email' => $email
    ]);
}

この場合、FormControllerクラスにindexメソッドを定義してform.blade.phpビューを表示する.

ビューの作成

resources/viewsディレクトリにform.blade.phpという名前でフォームを表示するビューを作成する。

<!DOCTYPE html>
<html>
<head>
  <title>Form</title>
</head>
<body>
  <form method="POST" action="/submit">
    @csrf
    <div>
      <label for="name">Name</label>
      <input type="text" name="name" id="name">
    </div>
    <div>
      <label for="email">Email</label>
      <input type="email" name="email" id="email">
    </div>
    <div>
      <button type="submit">Submit</button>
    </div>
  </form>
</body>
</html>

フォーム送信先のルート定義

フォームを送信する先のルートを作成する。routes/web.phpに以下を追記

Route::post('/submit', 'FormController@submit');

フォーム内容を処理するためのコントローラーを作成する

namespace App\Http\Controllers;
 
use Illuminate\Http\Request;
 
class FormController extends Controller
{
    public function submit(Request $request)
    {
        // フォームの送信内容を取得する
        $name = $request->input('name');
        $email = $request->input('email');
 
        // フォームの送信内容を処理する
        // ...
 
        // 処理が完了したら、リダイレクトする
        return redirect()->back()->with('success', '送信が完了しました。');
    }
}
laravel/form_example.1681203351.txt.gz · 最終更新: 2023/04/11 17:55 by mikoto