2015-10-04 79 views
0

您好我是Laravel的新手,我正在关注视图部分和表单重用的laracast。获取MethodNotAllowedException使用laravel 5

我正好到编辑页面。在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');

回答

0

试图改变做出行动的方式。试试这个(改变更新方法与你自己的):

'action' => ['[email protected]', $edu_content->id 

代替:

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

我试过了。同样的问题 – user3494047

+0

这一个$ edu_content-> title可以打印标题吗?如果是的话,那一个:$ edu_content-> id什么可以打印出来? –

+0

您是否尝试使用POST代替PATCH,检查laravel文档http://laravel.com/docs/5.1/routing#form-method-spoofing,HTML表单不支持PUT,PATCH或DELETE动作 – narendra