Reputation: 2204
In my controller/action:
if(!empty($_POST))
{
if(Auth::attempt(Input::get('data')))
{
return Redirect::intended();
}
else
{
Session::flash('error_message','');
}
}
Is there a method in Laravel
to check if the request is POST
or GET
?
Upvotes: 61
Views: 123473
Reputation:
I've solve my problem like below in laravel version: 7+
In routes/web.php:
Route::post('url', YourController@yourMethod);
In app/Http/Controllers:
public function yourMethod(Request $request) {
switch ($request->method()) {
case 'POST':
// do anything in 'post request';
break;
case 'GET':
// do anything in 'get request';
break;
default:
// invalid request
break;
}
}
Upvotes: 25
Reputation: 2569
$_SERVER['REQUEST_METHOD']
is used for that.
It returns one of the following:
Upvotes: 6
Reputation: 8321
Of course there is a method to find out the type of the request, But instead you should define a route that handles POST
requests, thus you don't need a conditional statement.
routes.php
Route::post('url', YourController@yourPostMethod);
inside you controller/action
if(Auth::attempt(Input::get('data')))
{
return Redirect::intended();
}
//You don't need else since you return.
Session::flash('error_message','');
The same goes for GET
request.
Route::get('url', YourController@yourGetMethod);
Upvotes: 6
Reputation: 1019
The solutions above are outdated.
As per Laravel documentation:
$method = $request->method();
if ($request->isMethod('post')) {
//
}
Upvotes: 85
Reputation: 3664
According to Laravels docs, there's a Request method to check it, so you could just do:
$method = Request::method();
or
if (Request::isMethod('post'))
{
//
}
Upvotes: 182
Reputation: 75629
Use Request::getMethod()
to get method used for current request, but this should be rarely be needed as Laravel would call right method of your controller, depending on request type (i.e. getFoo()
for GET and postFoo()
for POST).
Upvotes: 7