使用laravel 5获取MethodNotAllowedException

时间:2015-10-04 19:11:11

标签: php html rest laravel-5

您好我是Laravel的新手,我正在关注视图部分和表单重用的laracasts。

我正在编辑页面。 html看起来像这样:

@extends('app')

@section('content')
<h1>Edit: {!! $edu_content->title !!} </h1>

{!! Form::model($edu_content, ['method' => 'PATCH', 'url' => 'edu_contents/' . $edu_content->id ]) !!}
<div class="form-group">
    {!! Form::label('title', 'Title:') !!}
    {!! Form::text('title', null, ['class' => 'form-control']) !!}
</div>

<div class="form-group">
    {!! Form::label('tags', 'Tags:') !!}
    {!! Form::text('tags', null, ['class' => 'form-control']) !!}
</div>

<div class="form-group">
    {!! Form::label('user_id', 'User ID:') !!}
    {!! Form::text('user_id', null, ['class' => 'form-control']) !!}
</div>

<div class="form-group">
    {!! Form::label('location', 'Location:') !!}
    {!! Form::text('location', null, ['class' => 'form-control']) !!}
</div>

<div class="form-group">
    {!! Form::label('file_size', 'File Size:') !!}
    {!! Form::text('file_size', null, ['class' => 'form-control']) !!}
</div>

<div class="form-group">
    {!! Form::label('uploaded_at', 'Created On:') !!}
    {!! Form::input('date','uploaded_at', date('Y-m-d'), ['class' => 'form-control']) !!}
</div>

<div class="form-group">
    {!! Form::submit('Add Edu content!', ['class' => 'btn btn-primary form-control']) !!}

</div>
{!! Form::close() !!}

@if ($errors->any())
<ul class="alert alert-danger">
    @foreach ($errors->all() as $error)
    <li>{{ $error }}</li>
    @endforeach

</ul>
@endif

@stop

但是,当我查看网页来源时,它会显示action="http://localhost/edu_contents"而不是action="http://localhost/edu_contents/5"

然后,当我提交表格进行更新时,我得到:

 MethodNotAllowedHttpException in RouteCollection.php line 201:
 in RouteCollection.php line 201
 at RouteCollection->methodNotAllowed(array('GET', 'HEAD', 'POST')) in RouteCollection.php line 188
 at RouteCollection->getRouteForMethods(object(Request), array('GET', 'HEAD', 'POST')) in RouteCollection.php line 140
 at RouteCollection->match(object(Request)) in Router.php line 744
 at Router->findRoute(object(Request)) in Router.php line 653
 at Router->dispatchToRoute(object(Request)) in Router.php line 629
 at Router->dispatch(object(Request)) in Kernel.php line 229
 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

任何人都可以解释错误以及为什么id不会出现在操作中吗?

我的路线看起来像Route::resource('edu_contents','EduContentsController');

1 个答案:

答案 0 :(得分:0)

尝试更改执行操作的方式。试试这个(用你自己的方法更改更新方法):

'action' => ['EduContentsController@update', $edu_content->id

而不是:

'url' => 'edu_contents/' . $edu_content->id