当我提交下面详述的表单时,我得到了 MethodNotAllowedHttpException。该路线对我来说似乎是正确的,并且在语法上与其他运行良好的帖子路线相同。控制器方法存在,但即便如此,我认为异常发生在请求到达控制器之前,因为 laravel 错误页面左侧的第 4 项在第 3 项显示 findRoute 之后显示了 handleRoutingException。我很确定我没有像在 laravel 4 中那样使用 restful 路由,但那是因为教程我正在遵循 laravel 3 教程并将 hte 语法更新为 4 但就像我说的其他路由工作正常所以我无法弄清楚为什么这个不是。
模板
@extends('layouts.default')
@section('content')
<div id="ask">
<h1>Ask a Question</h1>
@if(Auth::check())
@include('_partials.errors')
{{ Form::open(array('ask', 'POST')) }}
{{ Form::token() }}
<p>
{{ Form::label('question', 'Question') }}
{{ Form::text('question', Input::old('question')) }}
{{ Form::submit('Ask a Question') }}
</p>
{{ Form::close() }}
@else
<p>
<p>Please login to ask or answer questions.</p>
</p>
@endif
</div><!-- end ask -->
@stop
路线
Route::post('ask', array('before'=>'csrf', 'uses'=>'QuestionsController@post_create'));
控制器
<?php
class QuestionsController extends BaseController {
public $restful = true;
protected $layout = 'layouts.default';
public function __construct()
{
$this->beforeFilter('auth', array('post_create'));
}
public function get_index() {
return View::make('questions.index')
->with('title', 'Make It Snappy Q&A - Home');
}
public function post_create()
{
$validation = Question::validate(Input::all());
if($validation->passes()) {
Question::create(array(
'question'=>Input::get('question'),
'user_id'=>Auth::user()->id
));
return Redirect::Route('home')
->with('message', 'Your question has been posted.');
} else {
return Redirect::Route('register')->withErrors($validation)->withInput();
}
}
}
?>