🐘
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