如何修复 "MethodNotAllowedHttpException" 当我单击按钮以显示其他 table 上的数据时 select 选项作为参考
How to fix "MethodNotAllowedHttpException" when I click button to show data on other table which select option as reference
我有两个table,他们是
1. Class table 列,class_id,名称
2. 老师 table with column teacher_id, name, class_id
我想在同一页的table老师上显示老师姓名和列名blade这是index.blade.php当我选择select基于填充数据的选项时在 class_id table class 上。我已经使用 select 选项成功完成数据 class_id,
但是当我单击“显示”按钮并更改 select 选项上的数据时,我收到如下错误消息:
Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException
No message
这是我在报告文件夹中的代码
index.blade.php
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="panel panel-default">
<div class="panel-heading">
<h4>Report List of Classroom</h4>
</div>
<div class="panel-body">
<form action="{{ route('reportshow') }}" method="post">
{{ csrf_field() }}
{{ method_field('patch') }}
@if ($errors->any())
<div class="alert alert-danger"><ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul></div>
@endif
<select id="class_id" class="form-control" name="class_id" width="150">
<option value=""> -- Choose Classroom -- </option>
@foreach($classroom as $classroom)
<option value="{{ $classroom->class_id }}">{{ $classroom->name }}</option>
@endforeach
</select>
<br>
<button type="submit" class="btn btn-primary">Show</button>
</form>
</div>
<div>
{{ isset($class_id) ? $class_id : '' }}
</div>
</div>
</div>
</div>
</div>
@endsection
====================================
在控制器上 ReportController.php
public function tampil(Request $request)
{
$results = DB::select('select name from teacher where class_id = ?', $request['class_id']);
return view('report.index', compact('results'));
}
====================================
于 routes/web.php
Route::post('reportshow', 'ReportController@tampil')->name('reportshow');
我希望在同一页的 table 老师上显示带有列名的老师姓名 blade 这是 index.blade.php 当我选择 select 选项时基于填充数据在 class_id table class 上,但出现错误:
Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException No message
MethodNotAllowedHttpException
告诉您没有为您在表单中使用的方法定义路由。您定义的路由仅适用于 POST
方法:Route::post('reportshow', 'ReportController@tampil')->name('reportshow');
而您的表单正在使用 PATCH
方法(通过使用 {{ method_field('patch') }}
)。
使用 POST
方法从表单中删除 {{ method_field('patch') }}
行到 post。
有关路由的更多信息:https://laravel.com/docs/5.6/routing
MethodNotAllowedHttpException
表示定义的路由和你使用的路由不匹配或者类型不匹配。
在你的情况下,路线是:
Route::post('reportshow', 'ReportController@tampil')->name('reportshow');
而您正在使用的是:
<form action="{{ route('reportshow') }}" method="post">
{{ csrf_field() }}
{{ method_field('patch') }}
这里method_field('patch')
这一行是用来覆盖patch
的方法,但是路由是post
类型的,这就是错误的原因。
要解决此问题,请将路由更改为:
Route::patch
或删除
{{ method_field('patch') }}
然后重试。
由于浏览器不理解 PATCH、PUT、DELETE 方法,所以您只能做一件事。它只理解 GET 和 POST。
将以下行设为:-
<form action="{{ route('reportshow') }}" method="patch">
并在后续行中添加以下行:-
<input type="hidden" name="_method" value="POST">
这只会让您通过,您不会收到以下错误。让我知道这是否解决了问题。
我有两个table,他们是 1. Class table 列,class_id,名称 2. 老师 table with column teacher_id, name, class_id
我想在同一页的table老师上显示老师姓名和列名blade这是index.blade.php当我选择select基于填充数据的选项时在 class_id table class 上。我已经使用 select 选项成功完成数据 class_id,
Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException No message
这是我在报告文件夹中的代码
index.blade.php
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="panel panel-default">
<div class="panel-heading">
<h4>Report List of Classroom</h4>
</div>
<div class="panel-body">
<form action="{{ route('reportshow') }}" method="post">
{{ csrf_field() }}
{{ method_field('patch') }}
@if ($errors->any())
<div class="alert alert-danger"><ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul></div>
@endif
<select id="class_id" class="form-control" name="class_id" width="150">
<option value=""> -- Choose Classroom -- </option>
@foreach($classroom as $classroom)
<option value="{{ $classroom->class_id }}">{{ $classroom->name }}</option>
@endforeach
</select>
<br>
<button type="submit" class="btn btn-primary">Show</button>
</form>
</div>
<div>
{{ isset($class_id) ? $class_id : '' }}
</div>
</div>
</div>
</div>
</div>
@endsection
====================================
在控制器上 ReportController.php
public function tampil(Request $request)
{
$results = DB::select('select name from teacher where class_id = ?', $request['class_id']);
return view('report.index', compact('results'));
}
====================================
于 routes/web.php
Route::post('reportshow', 'ReportController@tampil')->name('reportshow');
我希望在同一页的 table 老师上显示带有列名的老师姓名 blade 这是 index.blade.php 当我选择 select 选项时基于填充数据在 class_id table class 上,但出现错误:
Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException No message
MethodNotAllowedHttpException
告诉您没有为您在表单中使用的方法定义路由。您定义的路由仅适用于 POST
方法:Route::post('reportshow', 'ReportController@tampil')->name('reportshow');
而您的表单正在使用 PATCH
方法(通过使用 {{ method_field('patch') }}
)。
使用 POST
方法从表单中删除 {{ method_field('patch') }}
行到 post。
有关路由的更多信息:https://laravel.com/docs/5.6/routing
MethodNotAllowedHttpException
表示定义的路由和你使用的路由不匹配或者类型不匹配。
在你的情况下,路线是:
Route::post('reportshow', 'ReportController@tampil')->name('reportshow');
而您正在使用的是:
<form action="{{ route('reportshow') }}" method="post">
{{ csrf_field() }}
{{ method_field('patch') }}
这里method_field('patch')
这一行是用来覆盖patch
的方法,但是路由是post
类型的,这就是错误的原因。
要解决此问题,请将路由更改为:
Route::patch
或删除
{{ method_field('patch') }}
然后重试。
由于浏览器不理解 PATCH、PUT、DELETE 方法,所以您只能做一件事。它只理解 GET 和 POST。 将以下行设为:-
<form action="{{ route('reportshow') }}" method="patch">
并在后续行中添加以下行:-
<input type="hidden" name="_method" value="POST">
这只会让您通过,您不会收到以下错误。让我知道这是否解决了问题。