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サービスを導入することで、即時の本番利用にもつなげられます。
コメント