我是laravel的新手。我正在尝试实现一个简单的博客网站。 index.blade.php的代码如下:
@foreach ($articles as $article)
<div align = "center">
<h2>{{ $article->title }}</h2>
<div>{{ $article->text }}</div>
{{ Form::open(array('route' => array('articles.show', $article->id))) }}
{{ Form::submit('SHOW') }}
{{ Form::close() }}
{{ Form::open(array('method' => 'DELETE', 'route' => array('articles.destroy', $article->id))) }}
{{ Form::submit('DELETE') }}
{{ Form::close() }}
</div>
@endforeach
ArticlesController的代码:
public function show($id)
{
$article = Article::find($id);
return View::make('articles.show', compact('article'));
}
public function destroy($id)
{
Article::destroy($id);
return Redirect::route('articles.index');
}
show.blade.php的代码:
<p>
<strong>Title:</strong>
{{ $article->title }}
</p>
<p>
<strong>Text:</strong>
{{ $article->text }}
</p>
{{ link_to_route('articles.index', 'Back') }}
{{ link_to_route('articles.edit', 'Edit', $article->id) }}
当我点击删除按钮时,一切正常。我可以删除这篇文章。但是当我单击show按钮时,我得到MethodNotAllowedHttpException错误。 如果我更改index.blade.php中的代码:
{{ Form::open(array('route' => array('articles.show', $article->id))) }}
{{ Form::submit('SHOW') }}
{{ Form::close() }}
到
{{ link_to_route('articles.show', 'Show', $article->id) }}
一切顺利。谁能告诉我我的表格有什么问题?提前谢谢!
答案 0 :(得分:0)
我不知道是否为时已晚,但我想我知道会发生什么:
当您使用不正确的动词调用某些资源时,会发生MethodNotAllowedHttpException 。如果您有类似&#39; api / user&#39;的路线使用GET和POST,如果你进行PUT调用,这将抛出 MethodNotAllowedHttpException 。
在DELETE表单中,您说&#39; method = DELETE&#39;但是在SHOW的情况下你没有指定任何东西,所以应用了默认方法(POST)。在您的routes.php中,您拥有资源,但没有动词POST,因此Laravel会抛出 MethodNotAllowedHttpException 。
&#39; link_to_resource&#39;的默认方法是GET ^^
如何解决:在Form :: open
中添加method = GET