今ララベルを使ってユーザーの削除をユーザー自身で削除する機能を実装しているのですが、
Undefined variable $user (View: C:\workspace\neomediaproject\resources\views\home.blade.php) と出てしまい実装ができません。
念のため削除処理に必要な四つのファイルを載せます。
home.blade.php (ユーザーがログインしたときに表示されるページ)
@extends('layouts.app') @section('content') <div class="container"> <div class="row justify-content-center"> <div class="col-md-8"> <div class="card" class="col-sm-offset-2 col-sm-8"> <div class="card-header">{{ __('Dashboard') }}</div> <div class="card-body">{{ Auth::user()->name }}</div> <div class="card-body">{{ Auth::user()->email }}</div> <div class="card-body">{{ Auth::user()->id }}</div> <form action="/"> <button type="submit" class="btn btn-light">記事一覧へ</button> </form> <!-- ユーザー情報を削除ボタン押したらtopに戻る。補足:できればパスワードを要求するusercontrolerを使うか?homeからできるならやる --> <!-- 削除ボタンを作る --> <form action="/{{$user->id}}" method="POST"> @method('DELETE') @csrf <button type="submit" class="btn btn-danger"><i class="fa fa-trash"></i>削除</button> </form> <div class="card-body"> @if (session('status')) <div class="alert alert-success" role="alert"> {{ session('status') }} </div> @endif {{ __('You are logged in!') }} </div> </div> </div> </div> </div> @endsection
web.php ルーティング
<?php use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Route; use App\Models\Voting; use Illuminate\Http\Request; use App\Models\User; use App\Models\UserController; /* |-------------------------------------------------------------------------- | Web Routes |-------------------------------------------------------------------------- | | Here is where you can register web routes for your application. These | routes are loaded by the RouteServiceProvider within a group which | contains the "web" middleware group. Now create something great! | */ Route::get('/', function () { /* Votingモデルを全て取得してトップページに表示する。 */ $votings = Voting::all(); return view('votings', ['votings' => $votings]); })/* ->middleware('auth') */; /* ログインするとトップページにいくこれをつかってマイページいける処理を書く */ Route::post('/voting', function (Request $request) { /* 有効なデータが入っているかどうかを確認するためにvalidatorを使う */ /* $requestから全てのデータを取得するその中のnameの属性に条件を指定する*/ $validator = Validator::make($request->all(), [ /* 入力必須255文字 form のnameパラメータを設定する*/ 'name' => 'required|max:255', ]); if ($validator->fails()) { return redirect('/') ->withInput() ->withErrors($validator); } /* votingモデルに新しいオブジェクトを追加する */ $voting = new Voting; /* votingモデルのtitleに$request->nameを格納する。 */ $voting->name = $request->name; //dd($request->name); //saveメソッド $voting->save(); /* トップページにリダイレクトして置く */ return redirect('/'); }); Route::delete('/voting/{voting}',function(Voting $voting){ $voting->delete(); /* トップページに置く */ return redirect('/'); }); Route::delete('/{id}', 'UserController@destroy')->where('id', '[0-9]+'); Auth::routes(); /* 第一引数でhomeを読んだときそのページに移動してから第二引数ホームコントローラを呼びその中のindexクラスを使う *indexクラスはyユーザーのビューを返す * */ Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home'); /* ユーザを削除するためのコントローラーとクラスを呼ぶ */
UserController.php
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\User; class UserController extends Controller { /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { // } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { // } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { // } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show($id) { // } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { // } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { // } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { // User::destroy($id); return redirect('/'); } }
yyyy_mm_dd_create_user_table.php
,
@<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateUsersTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('users', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); $table->rememberToken(); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('users'); } }
削除機能についていい方法があれば教えていただければ助かります、、
回答3件
あなたの回答
tips
プレビュー