LaravelでSMS送信画面を実装する方法

Coding

LaravelとBladeテンプレートを活用して、顧客一覧からSMS送信画面に遷移し、メッセージを編集・送信する機能を実装する方法を解説します。

概要

  • 顧客一覧画面に「SMS送信」ボタンを配置
  • ボタン押下でSMS編集画面に遷移
  • 遷移時に顧客IDを渡す
  • 編集画面でメッセージを入力し送信
  • データベースを使わず送信のみ対応

1. ルーティングの定義

// routes/web.php
Route::get('/customers/{id}/sms', [CustomerController::class, 'showSmsForm'])->name('customers.sms');
Route::post('/customers/{id}/sms', [CustomerController::class, 'sendSms'])->name('customers.sms.send');

2. コントローラーの実装

// app/Http/Controllers/CustomerController.php

use Illuminate\Http\Request;
use App\Models\Customer;

class CustomerController extends Controller
{
    public function showSmsForm($id)
    {
        $customer = Customer::findOrFail($id);
        return view('customers.sms', compact('customer'));
    }

    public function sendSms(Request $request, $id)
    {
        $request->validate([
            'message' => 'required|string|max:160',
        ]);

        $customer = Customer::findOrFail($id);

        // SMS送信処理(仮)
        // 実際のAPI呼び出しなどはここに記述
        \Log::info("SMS送信: {$customer->tel} - {$request->message}");

        return redirect()->route('customers.index')->with('success', 'SMSを送信しました');
    }
}

3. 顧客一覧画面でSMSボタンを表示

<!-- resources/views/customers/index.blade.php -->
@foreach ($customers as $customer)
<tr>
    <td>{{ $customer->name }}</td>
    <td>{{ $customer->tel }}</td>
    <td>
        <a href="{{ route('customers.sms', $customer->id) }}" class="btn btn-sm btn-primary">SMS送信</a>
    </td>
</tr>
@endforeach

4. SMS送信画面の作成

<!-- resources/views/customers/sms.blade.php -->
@extends('layouts.app')

@section('content')
<div class="container">
    <h2>SMS送信 - {{ $customer->name }}</h2>

    <form method="POST" action="{{ route('customers.sms.send', $customer->id) }}">
        @csrf
        <div class="form-group">
            <label for="message">メッセージ内容(160文字以内)</label>
            <textarea name="message" id="message" class="form-control" rows="4" required>{{ old('message') }}</textarea>
        </div>
        <button type="submit" class="btn btn-success mt-2">送信</button>
    </form>
</div>
@endsection

まとめ

この実装では、SMS送信機能を以下の構成で簡潔に実現しました:

  • Bladeによる画面遷移とフォーム作成
  • バリデーションを含んだ送信処理
  • 実データベースへの登録なし

Twilioや他のSMSサービスを導入することで、即時の本番利用にもつなげられます。

コメント

タイトルとURLをコピーしました