我有一个审核队列作为我正在构建的应用程序的一部分。用户可以提交问卷,但需要由管理员进行审核。提交表单给出了MethodNotAllowedHttpException错误
我已经构建了队列的功能,并可以加载他们提交给页面的答案,但是我在实现批准/拒绝按钮时遇到了问题。
我想要页面显示他们的答案,它做的,然后底部有一个按钮批准,然后按钮拒绝(与文本框的原因)。
当任一按钮被点击时,我正在尝试更新表格 - 但是我只是得到一个错误MethodNotAllowedHttpException in RouteCollection.php line 201:
。
我不明白为什么我以类似的方式建立用户管理功能没有任何问题。
谁能帮助,或者建议一个更好的方式做我在做什么:
路线
Route::resource('/questionnaire', 'QuestionnaireController');
控制器
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Validator;
use Input;
use Redirect;
use App\Questionnaire;
use App\User;
use DB;
class QuestionnaireController extends Controller
{
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index()
{
return view('questionnaire.index');
}
public function moderate()
{
$questionnaires = DB::table('users')
->join('questionnaire', 'users.id', '=', 'questionnaire.memberid')
->select('users.username', 'questionnaire.*')
->get();
return view('questionnaire.moderate', ['questionnaires' => $questionnaires]);
}
public function view($id)
{
$questionnaire = Questionnaire::find($id);
return view('questionnaire.view', ['questionnaire' => $questionnaire]);
}
/**
* Show the form for creating a new resource.
*
* @return Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param Request $request
* @return Response
*/
public function store(Request $request)
{
$questionnaire = new Questionnaire;
$validator = Validator::make($request->all(), [
'q1' => 'required|between:128,512',
'q2' => 'required|between:128,512',
'q3' => 'required|between:128,512',
'q4' => 'required|between:128,512',
'q5' => 'required|between:128,512',
], [
'q1.required' => 'The first answer is empty!',
'q2.required' => 'The second answer is empty!',
'q3.required' => 'The third answer is empty!',
'q4.required' => 'The fourth answer is empty!',
'q5.required' => 'The fifth answer is empty!',
'q1.between' => 'The first answer must be between :min - :max characters long.',
'q2.between' => 'The second answer must be between :min - :max characters long.',
'q3.between' => 'The third answer must be between :min - :max characters long.',
'q4.between' => 'The fourth answer must be between :min - :max characters long.',
'q5.between' => 'The fifth answer must be between :min - :max characters long.',
]);
if ($validator->fails()) {
return redirect('/questionnaire')
->withErrors($validator)
->withInput();
}
$questionnaire->memberid = $request->memberid;
$questionnaire->q1 = $request->q1;
$questionnaire->q2 = $request->q2;
$questionnaire->q3 = $request->q3;
$questionnaire->q4 = $request->q4;
$questionnaire->q5 = $request->q5;
$questionnaire->save();
$id = $request->memberid;
$user = User::find($id);
$user->confirmed = 1;
$user->save();
return redirect('/');
}
/**
* Display the specified resource.
*
* @param int $id
* @return Response
*/
public function show($id)
{
$questionnaire = Questionnaire::find($id);
return view('questionnaire.show', ['questionnaire' => $questionnaire]);
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return Response
*/
public function edit($id)
{
$questionnaire = Questionnaire::find($id);
return view('questionnaire.edit', ['questionnaire' => $questionnaire]);
}
/**
* Update the specified resource in storage.
*
* @param Request $request
* @param int $id
* @return Response
*/
public function update($id)
{
$questionnaire = Questionnaire::find($id);
$button = Input::get('buttonid');
if ($button == "approve")
{
$questionnaire->status = 3;
$questionnaire->save();
return redirect('questionnaire/moderate');
}
if ($button == "reject")
{
$questionnaire->status = 2;
$questionnaire->rejectreason = Input::get('rejectreason');
$questionnaire->save();
}
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return Response
*/
public function destroy($id)
{
//
}
}
查看可可以在URI /问卷/ {membersid}/ed中找到它
@extends('app')
@section('content')
<div class='col-lg-4 col-lg-offset-4'>
@if (Auth::guest())
You need to be logged in to use this page.
@else
<h1><i class='fa fa-user'></i> Review Questionnaire</h1>
<h3>Question 1:</h3>
{{$questionnaire->q1}}
<h3>Question 2:</h3>
{{$questionnaire->q2}}
<h3>Question 3:</h3>
{{$questionnaire->q3}}
<h3>Question 4:</h3>
{{$questionnaire->q4}}
<h3>Question 5:</h3>
{{$questionnaire->q5}}
<br />
<br />
{!! Form::model($questionnaire, ['role' => 'form', 'url' => '/questionnaire/' . $questionnaire->memberid . '/edit', 'method' => 'PUT'])!!}
{!! Form::hidden('memberid', $questionnaire->memberid) !!}
{!! Form::submit('Approve', ['class' => 'btn btn-success', 'name' => 'buttonid', 'value' => 'approve']) !!}
{!! Form::submit('Reject', ['class' => 'btn btn-danger', 'name' => 'buttonid', 'id' => 'buttonid', 'value' => 'reject']) !!}
{!! Form::textarea('rejectreason', null, ['placeholder' => "Reason why you're rejecting... please be specific as the member will read this", 'class' => 'form-control']) !!}
{!! Form::close() !!}
@endif
</div>
@endsection
当我点击任一按钮,虽然,我得到的错误如下:
MethodNotAllowedHttpException in RouteCollection.php line 201:
in RouteCollection.php line 201
at RouteCollection->methodNotAllowed(array('GET', 'HEAD')) in RouteCollection.php line 188
at RouteCollection->getRouteForMethods(object(Request), array('GET', 'HEAD')) in RouteCollection.php line 140
at RouteCollection->match(object(Request)) in Router.php line 746
at Router->findRoute(object(Request)) in Router.php line 655
at Router->dispatchToRoute(object(Request)) in Router.php line 631
at Router->dispatch(object(Request)) in Kernel.php line 236
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in VerifyCsrfToken.php line 50
at VerifyCsrfToken->handle(object(Request), object(Closure))
at call_user_func_array(array(object(VerifyCsrfToken), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in ShareErrorsFromSession.php line 54
at ShareErrorsFromSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in StartSession.php line 62
at StartSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure))
at call_user_func_array(array(object(AddQueuedCookiesToResponse), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in EncryptCookies.php line 59
at EncryptCookies->handle(object(Request), object(Closure))
at call_user_func_array(array(object(EncryptCookies), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in CheckForMaintenanceMode.php line 42
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Kernel.php line 122
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 87
at Kernel->handle(object(Request)) in index.php line 54
我看其他问题,但他们似乎具体到他们设立。有人能帮忙吗?
当我提交表单与您的更改它仍然不会更新数据库? – James
我怀疑你的更新方法中没有任何条件得到满足。 'dd(Input :: get('buttonid'));'output? –