前提・実現したいこと
Laravel5.5にて、下記画面のような一覧画面からの確認画面付き編集機能を作成したいと考えております。
編集確認画面から一覧への更新機能実装中に以下のエラーメッセージが発生しました。
どなたかエラー原因について、ご存知の方がいらっしゃいましたら教えて頂ければと思います。
宜しくお願い致します。
※躓いている箇所は上記図の3から4の部分です。
発生している問題・エラーメッセージ
Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException No message
該当のソースコード
■ \xampp\htdocs\demo\resources\views\students
【list.blade.php】
php
1@extends('layouts.layout') 2@section('title', 'Tutrial for beginner') 3@section('content') 4 <div class="page-header" style="margin-top:-30px;padding-bottom:0px;"> 5 <h1><small>受講生一覧</small></h1> 6 <div class="col-sm-2"> 7 <a href="{{ url('students/new_index') }}" class="btn btn-warning"><i class="glyphicon glyphicon-plus"></i> 新規登録</a> 8 </div> 9 </div> 10 <table class="table table-striped table-hover"> 11 <thead> 12 <tr> 13 <th>No</th> 14 <th>name</th> 15 <th>email</th> 16 <th>tel</th> 17 <th>opration</th> 18 </tr> 19 </thead> 20 <tbody> 21 @foreach($students as $student) 22 <tr> 23 <td>{{ $student->id }}</td> 24 <td>{{ $student->username }}</td> 25 <td>{{ $student->email }}</td> 26 <td>{{ $student->tel}}</td> 27 <td> 28 <a href="{{ action('StudentController@show', $student->id) }}" class="btn btn-primary btn-sm">詳細</a> 29 <a href="{{ action('StudentController@edit_index', $student->id) }}" class="btn btn-primary btn-sm">編集</a> 30 <a href="" class="btn btn-danger btn-sm">削除</a> 31 </td> 32 </tr> 33 @endforeach 34 </tbody> 35 </table> 36 <!-- page control --> 37 {{ $students->links() }} 38@endsection
【edit_index.blade.php】
php
1@extends( 'layouts.layout' ) 2@section( 'title', 'Tutrial for beginner' ) 3@section( 'content' ) 4 <h3>受講生編集画面|入力画面</h3> 5 <p><span class="label label-danger">入力画面</span>-> 確認画面 ->完了画面</p> 6 <form action="{{ action('StudentController@edit_confirm', $students->id)}}" method="POST" class="form-horizontal"> 7 {{ csrf_field() }} 8 {{ method_field('patch') }} 9 <div class="form-group @if($errors->has('name')) has-error @endif"> 10 <label for="name" class="col-md-3 control-label">お名前</label> 11 <div class="col-sm-9"> 12 <input type="name" class="form-control" id="name" name="name" value="{{ $students->username }}"> @if($errors->has('name')) 13 <span class="text-danger">{{ $errors->first('name') }}</span> @endif 14 </div> 15 </div> 16 <div class="form-group @if($errors->has('mail')) has-error @endif"> 17 <label for="mail" class="col-md-3 control-label">メールアドレス</label> 18 <div class="col-sm-9"> 19 <input type="mail" class="form-control" id="mail" name="mail" value="{{ $students->email }}"> @if($errors->has('mail')) 20 <span class="text-danger">{{ $errors->first('mail') }}</span> @endif 21 </div> 22 </div> 23 <div class="form-group @if($errors->has('tel')) has-error @endif"> 24 <label for="tel" class="col-md-3 control-label">電話番号</label> 25 <div class="col-md-9"> 26 <input type="tel" class="form-control" id="tel" name="tel" value="{{$students->tel }}"> @if($errors->has('tel')) 27 <span class="text-danger">{{ $errors->first('tel') }}</span> @endif 28 </div> 29 </div> 30 <div class="col-md-offset-3 text-center"><button class="btn btn-primary">確認</button> 31 </div> 32 </form> 33@endsection
【edit_confim.php】
php
1@extends('layouts.layout') 2@section('title', 'Tutrial for beginner') 3@section('content') 4 <h3>受講生編集画面|確認画面</h3> 5 <p>入力画面-><span class="label label-danger"> 確認画面</span> ->完了画面</p> 6 <form action="{{url('students/list/')}}" method="post" class="form-horizontal"> 7 {{ csrf_field() }} 8 <input type="hidden" name="name" value="{{$name}}"> 9 <input type="hidden" name="email" value="{{$mail}}"> 10 <input type="hidden" name="tel" value="{{$tel}}"> 11 <div class="row"> 12 <label class="col-sm-4 control-label">お名前</label> 13 <div class="col-sm-8">{{$name}}</div> 14 </div> 15 <div class="row"> 16 <label class="col-sm-4 control-label">メールアドレス</label> 17 <div class="col-sm-8">{{$mail}}</div> 18 </div> 19 <div class="row"> 20 <label class="col-sm-4 control-label">電話番号</label> 21 <div class="col-sm-8">{{$tel}}</div> 22 </div> 23 <div class="row" style="margin-top: 30px;"> 24 <div class="col-sm-offset-4 col-sm-8"> 25 <input type="submit" name="button1" value="登録" class="btn btn-primary btn-wide" /> 26 </div> 27 </div> 28 </form> 29@endsection
■\xampp\htdocs\demo\routes
【web.php】
php
1//studentsList画面 2Route::prefix('students')->group(function () { 3 Route::get('list','StudentController@getIndex'); //一覧表示 4 Route::get('/edit_index/{id}', 'StudentController@edit_index'); //編集 5 Route::patch('/edit_confirm/{id}','StudentController@edit_confirm'); //確認 6 Route::post('/list/{id}', 'StudentController@update'); //UPdate完了 7});
■\xampp\htdocs\demo\app
【Students.php】
php
1<?php 2 3namespace App; 4 5use Illuminate\Database\Eloquent\Model; 6 7class Students extends Model 8{ 9 protected $fillable =['id','username','mail', 'tel' ]; 10}
■\xampp\htdocs\demo\app\Http\Controllers
【StudentController.php】
php
1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Support\Facades\DB; //DBオブジェクト 6use Illuminate\Http\Request; 7use App\Http\Requests\CheckStudentRequest; 8use App\Students; //Studentsクラス 9use Validator; 10 11class StudentController extends Controller 12{ 13 public function getIndex(Request $request) 14 { 15 $students = DB::table('students')->Orderby('id','asc')->simplePaginate(5); 16 return view('students.list', ['students' => $students]); 17 } 18 19 public function edit_index($id) 20 { 21 $students = Students::findorFail($id); 22 return view('students.edit_index')->with('students',$students); 23 } 24 25 public function edit_confirm(CheckStudentRequest $request) 26 { 27 // $requestから全てのオブジェクトを引き出し$dataへ格納 28 $data = $request->all(); 29 // $dataの変数をstudents/new_confrimページに返す。 30 return view('students.edit_confirm')->with($data); 31 } 32 33 public function update(Request $request,$id) 34 { 35 //Studentオブジェクトからレコードを検索 36 $students = Students::findOrFail($id); 37 // 値の保存 38 $students->fill($request->all())->save(); 39 40 return redirect()->route('students.list'); 41 } 42}
試したこと
- edit_confim.phpのform actionの書き換え(1)
php
1<form action="{{url('students/list/{id}')}}" method="post" class="form-horizontal">
→id部分が暗号化され、ページが見つかりませんとのエラー画面が出て駄目でした。
- edit_confim.phpのform actionの書き換え(2)
php
1<form action="{{ action('StudentController@update', $student->id))}" method="post" class="form-horizontal">
→ unvariable $studentsで値が見つからないというエラーが出ます。
補足情報(FW/ツールのバージョンなど)
■ 使用OS:Windows 10 PRO
■ XAMPP Version: 7.2.5
■ phpversion:7.1
■ Laravelversion:5.5
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。