🐘
Laravel入門4 Request
記事一覧
- Laravel × Docker 最速環境構築
 - Laravel 入門1 ページ追加
 - Laravel入門2 bladeディレクティブ
 - Laravel入門3 静的ファイル
 - Laravel入門4 Request
 - Laravel入門5 Todoアプリ(データベース)
 - Laravel入門6 Todoアプリ(認証機能)
 - Laravel入門7 Todoアプリ(CRUD)
 
Request
Requestとは
フォーム送信の入力値などのアクセス時のリクエスト情報
フォームの作成
top/index.blade.phpにフォームを記述
- top/index.blade.php
 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <h1>トップページ</h1>
    {{-- 中括弧2個でphpを記述 --}}
    {{-- route(ルーティング名) とすることでformからURLにアクセス可能 --}}
    <form action="{{ route('top') }}">
        <label>名前</label>
        <input type="text" name="name">
        <label>メールアドレス</label>
        <input type="text" name="email">
        <button type="submit">送信</button>
    </form>
</body>
</html>
ルーティング名
- web.php
 
// top のこと
Route::get('/top', [TopController::class, 'index'])->name("top");
フォームデータの受け取り
TopControllerのindex関数でリクエストから入力値を取得
- TopController.php
 
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class TopController extends Controller
{
    // Request 変数名 で変数にリクエストが代入される
    // (今回は$requestにリクエストが代入される)
    function index(Request $request) {
        // リクエストからnameとemailを取得
        // inputのname属性がキーの名前になる
        // <input type="text" name="name">
        $name = $request["name"];
        $email = $request["email"];
        // nameとemailもviewに渡す
        return view("top.index", compact("name", "email"));
    }
}
フォームデータの表示
top/index.blade.phpでnameとemailを表示
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <h1>トップページ</h1>
    <form action={{ route('top') }}>
        <label>名前</label>
        <input type="text" name="name">
        <label>メールアドレス</label>
        <input type="text" name="email">
        <button type="submit">送信</button>
    </form>
    {{-- $nameが無い場合もあるので、if文で確認 --}}
    @if (!empty($name))
        <p>名前: {{ $name }}</p>
    @endif
    {{-- $emailが無い場合もあるので、if文で確認 --}}
    @if (!empty($email))
        <p>メールアドレス: {{ $email }}</p>
    @endif
</body>
</html>
http://localhost:8000/topで名前とメールアドレスを送信したときに表示されればOK

Discussion