我有laravel抛出问题405 MethodNotAllowedHttpException。 我一直在尝试将更新请求的验证添加到我的资源PointController。但是,如果忽略@update方法中的验证(并且未经验证更新Point)。因此,我在laracast上发现了一些类似的东西:
class PointRequest extends Request{
public function authorize()
{
return true;
}
public function rules()
{
switch($this->method())
{
case 'GET':
case 'DELETE':
{
return[];
}
case 'POST':
{
return [
'name' =>'required|min:4',
'latitude' => 'required|numeric|unique_with:points,longitude',
'longitude' => 'required|numeric'
];
}
case 'PUT':
case 'PATCH':
{
return [
'name' =>'required|min:4',
'latitude' => 'required|numeric|unique_with:points,longitude',
'longitude' => 'required|numeric|unique_with:points,latitude'//will add ignore current row
];
}
default:break;
}
}
}
可悲的是,它不起作用。为了测试我的应用程序,我正在使用带有x-www-form-urlencoded的POSTMAN。我的项目的一般想法是有本机Android应用程序将通过jsons与服务器应用程序(laravel)进行通信。所以我认为这与我的情况无关:
form action="/foo/bar" method="POST"
input type="hidden" name="_method" value="PUT"
这是PointController的一部分
public function update(PointRequest $request, $id)
{//code//
我在某个地方犯了一些严重的错误吗?如何让laravel验证我的PUT / PATCH请求?这是我的第一个问题所以我希望我能以正确的方式提出问题。
答案 0 :(得分:0)
您是否为该请求创建了route
?
Laravel中的大多数HTTP 405错误是由错误定义的路由引起的,或者根本没有为所请求的方法定义路由。
像这样:
Route::post( '/urlPatchRequest', 'PointRequest@update' )