質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

4937閲覧

laravelにおけるroute [] not defined. を解消したい

asahiko123

総合スコア43

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2021/11/09 10:38

編集2021/11/09 10:42

前提・実現したいこと

PHP(laravel)でCRUD+Gate機能でアカウントごとに操作権限がことなるようなアプリを作っています。
その過程で表題のエラーが発生し、原因がわからないので質問させていただきました。
イメージ説明
管理者アカウント(role=5)でログインしていて、テーブルのデータを編集しようとするとき、
indexページからeditページに遷移する時にエラーが 起きます。
イメージ説明

index,create,deleteは正常に機能しています。

発生している問題・エラーメッセージ

debugbarの表示

Symfony\Component\Routing\Exception\RouteNotFoundException Route [equipment.update] not defined. (View: C:\MAMP\htdocs\Equipment\resources\views\equipments\edit.blade.php) http://127.0.0.1:8000/equipment/edit/4

該当のソースコード

コントローラー

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\EquipmentForm; use Illuminate\Support\Facades\DB; use App\Services\CheckFormData; class EquipmentController extends Controller { /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { $equipments =DB::table('equipment_forms') ->select('id','name','borrowed','checkout','returned','confirmed','description') ->orderBy('id','desc') ->paginate(10); $borrowarr =array(); $confirmarr =array(); foreach($equipments as $value){ $borrowed =CheckFormData::CheckBorrowed($value); $confirmed=CheckFormData::CheckConfirmed($value); $borrowarr[] =$borrowed; $confirmarr[]=$confirmed; } return view('equipments.index',compact('equipments','borrowarr','confirmarr')); } 略 public function edit($id) { $equipment =EquipmentForm::find($id); return view('equipments.edit',compact('equipment')); } public function update(Request $request, $id) { $equipment =EquipmentForm::find($id); $equipment->name = $request->input('name'); $equipment->borrowed = $request->input('borrowed'); $equipment->checkout = $request->input('checkout'); $equipment->returned = $request->input('returned'); $equipment->description=$request->input('description'); $equipment->confirmed= $request->input('confirmed'); $equipment->save(); return redirect('equipment/index'); } 略 }

edit.blade.php

@extends('layouts.app') @section('content') <div class="container"> <div class="row justify-content-center"> <div class="col-md-8"> <div class="card"> <div class="card-header">Dashboard</div> <div class="card-body"> @if (session('status')) <div class="alert alert-success" role="alert"> {{ session('status') }} </div> @endif <form method="POST" action="{{route('equipment.update',['id'=>$equipment->id])}}"> @csrf <!-- 氏名 <input type="text" name="name"> 貸出物 <select name="borrowed"> <option value=""></option> <option value="1">A</option> <option value="2">B</option> <option value="3">C</option> <option value="4">D</option> <option value="5">E</option> <option value="6">F</option> <option value="7">G</option> <option value="8">H</option> <option value="9">I</option> </select> 貸出日 <input type="date" name="checkout"> 返却日 <input type="date" name="returned"> 備考 <textarea name="description"></textarea> --> <input type="radio" name="confirmed"value="0">貸出中 <input type="radio" name="confirmed" value="1">返却済 <input class="btn btn-info" type="submit" value="更新する"> </form> </div> </div> </div> </div> </div> @endsection

index.blade.php

@extends('layouts.app') @section('content') <div class="container"> <div class="row justify-content-center"> <div class="col-md-12"> <div class="card"> <div class="card-header">ダッシュボード</div> <div class="card-body"> @if (session('status')) <div class="alert alert-success" role="alert"> {{ session('status') }} </div> @endif <form method="GET" action="{{route('equipment.create')}}"> <button type="submit"class="btn btn-primary">新規登録</button> </form> <table class="table table-striped"> <thead> <tr> <th scope="col">id</th> <th scope="col">氏名</th> <th scope="col">貸出物</th> <th scope="col">貸出日</th> <th scope="col">返却日</th> <th scope="col">状態</th> <th scope="col">備考</th> <th scope="col"></th> <th scope="col"></th> </tr> </thead> <tbody> @foreach($equipments as $equipment) <tr> <th>{{$equipment->id}}</th> <td>{{$equipment->name}}</td> <td>{{$borrowarr[$loop->iteration -1]}}</td> <td>{{$equipment->checkout}}</td> <td>{{$equipment->returned}}</td> <td><span class="badge badge-success">{{$confirmarr[$loop->iteration -1]}}</span></td> <td>{{$equipment->description}}</td> @can('admin-higher') <td><a href="{{ route('equipment.edit',['id'=> $equipment->id])}}">編集</a></td> <td> <form method="POST" action="{{route('equipment.destroy',['id'=> $equipment->id])}}"> @csrf <button type="submit"class="btn btn-danger">削除する</button> </form> </td> @endcan @endforeach </tbody> </table> {{$equipments->links()}} </div> </div> </div> </div> </div> @endsection

web.php

<?php /* |-------------------------------------------------------------------------- | 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! | */ Auth::routes(); Route::get('/home', 'HomeController@index')->name('home'); Route::get('/', function () { return view('welcome'); }); //全ユーザに許可 Route::group(['prefix'=>'equipment','middleware'=>['auth','can:user-higher']],function(){ Route::get('index','EquipmentController@index')->name('equipment.index'); Route::get('create','EquipmentController@create')->name('equipment.create'); Route::post('store','EquipmentController@store')->name('equipment.store'); }); //管理者以上 Route::group(['prefix'=>'equipment','middleware'=>['auth','can:admin-higher']],function(){ Route::post('index','EquipmentController@index')->name('equipment.index'); Route::get('edit/{id}','EquipmentController@edit')->name('equipment.edit'); Route::post('update/{id}','EquipmentController@update')->name('equipmnet.update'); Route::post('destroy/{id}','EquipmentController@destroy')->name('equipment.destroy'); }); //開発者以上 Route::group(['prefix'=>'equipment','middleware'=>['auth','can:system-only']],function(){ });

試したこと

ルーティング、コントローラーの記述をしているのになぜ route[equipment.update] が定義されていないという
エラーになるのかが分かりません。

https://teratail.com/questions/265218

似たような質問がありましたが、ルートの重複はしていないと思います。

エラ-後半の記述から throw new RouteNotFoundException("Route [{$name}] not defined.");とあり

ルーティングかコントローラーの記述でミスしているところがあるような気がしてますが、
自分で間違いが見つけられなかったので、ご指摘いただきたいです。

補足情報(FW/ツールのバージョンなど)

vscode1.62.0
PHP 7.4.16
Laravel Framework 6.20.37
MAMP(windows) 5.0.3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

web.phpにそのルート名の記載がないからでは。

web.phpは
equipmnet.update

route()で呼び出している記述は
equipment.update

コピペすれば間違いに気づけますし、間違えません。

投稿2021/11/09 10:57

編集2021/11/09 10:57
m.ts10806

総合スコア80861

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

asahiko123

2021/11/09 12:29

ご指摘いただきありがとうございます。typoを修正したところ正しく動作しました。 名称はコピペして記述量を減らすように心がけたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問