Laravelで簡単にホームページを作成

まずはweb.phpを作成

// トップページ
Route::get('/', function () {
    return view('welcome');
});

// 会社紹介ページ
Route::get('/about', function () {
    return view('about');
});

// コンタクトフォームページ
Route::get('/contact', function () {
    return view('contact');
});


use App\Http\Controllers\ContactController;

// コンタクトフォームのデータ送信を処理するルート
Route::post('/contact', [ContactController::class, 'store']);

headerとfooterを作成

resouces->views->layouts->app.blade.php

<!-- resources/views/layouts/app.blade.php -->

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <link href="{{ asset('css/app.css') }}" rel="stylesheet">
    <title>アプリケーション名 - @yield('title')</title>
</head>
<body>
    <header>
        <h1>共通ヘッダー</h1>
        <nav>
            <ul>
                <li><a href="{{ url('/') }}">トップページ</a></li>
                <li><a href="{{ url('/about') }}">会社概要</a></li>
                <li><a href="{{ url('/contact') }}">コンタクトフォーム</a></li>
            </ul>
         </nav>
    </header>

    //コンタクトフォームからの遷移先
    <div class="container">
        @if (session('success'))
            <div class="alert alert-success">
                {{ session('success') }}
            </div>
        @endif

        @yield('content')
    </div>

    <footer>
        <p>共通フッター</p>
        <nav>
            <ul>
                <li><a href="{{ url('/') }}">トップページ</a></li>
                <li><a href="{{ url('/about') }}">会社概要</a></li>
                <li><a href="{{ url('/contact') }}">コンタクトフォーム</a></li>
            </ul>

        </nav>
    </footer>
</body>
</html>

次に、「トップページ」「会社概要」「コンタクトフォーム」を作成


views->welcome.blade.php

<!-- resources/views/welcome.blade.php -->

@extends('layouts.app')

@section('title', 'トップページ')

@section('content')
    <h2>トップページのコンテンツ</h2>
    <p>ここにトップページのコンテンツを置きます。</p>
@endsection

views->about.blade.php

<!-- resources/views/about.blade.php -->

@extends('layouts.app')

@section('title', '会社概要ページ')

@section('content')
    <h2>会社概要ページのコンテンツ</h2>
    <p>ここに会社概要ページのコンテンツを置きます。</p>
@endsection

views->contact.blade.php

<!-- resources/views/contact.blade.php -->

@extends('layouts.app')

@section('title', 'コンタクトフォーム')

@section('content')
    <h1>お問い合わせ</h1>
    
    <!-- 送信先を設定 -->
    <form method="POST" action="{{ url('/contact') }}">
        <!-- CSRFトークンを設定(セキュリティ対策) -->
        @csrf
        
        <!-- 名前入力フィールド -->
        <div>
            <label for="name">名前:</label>
            <input type="text" id="name" name="name" required>
        </div>
        
        <!-- メールアドレス入力フィールド -->
        <div>
            <label for="email">メールアドレス:</label>
            <input type="email" id="email" name="email" required>
        </div>
        
        <!-- メッセージ入力エリア -->
        <div>
            <label for="message">メッセージ:</label>
            <textarea id="message" name="message" required></textarea>
        </div>
        
        <!-- 送信ボタン -->
        <div>
            <button type="submit">送信</button>
        </div>
    </form>
@endsection

コントローラ作成

ターミナル

php artisan make:controller ContactController

app->Http->Controller->ContactController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ContactController extends Controller
{
    public function store(Request $request)
    {
        // バリデーションルールを適用
        $validated = $request->validate([
            'name' => 'required|max:255',
            'email' => 'required|email',
            'message' => 'required',
        ]);

        // バリデーションが通れば後続の処理へ
        // 例:データベースへの保存やメール送信など

        // 処理後、適切なリダイレクトやメッセージ表示
        return redirect('/')->with('success', 'お問い合わせありがとうございます!');
    }
}

CSS

pubric->css->app.css

ul {
    list-style: none; /* リストマークを非表示にする */
    padding: 0; /* パディングをリセットする */
    display: flex; /* Flexbox を有効化 */
}

li {
    margin-right: 10px; /* 隣接する要素との間隔を設定 */
}

この記事が気に入ったらサポートをしてみませんか?