JoeLoco
JoeLoco

Reputation: 2204

Check if request is GET or POST

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

Answers (6)

user9916289
user9916289

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

anotherdev
anotherdev

Reputation: 2569

$_SERVER['REQUEST_METHOD'] is used for that.

It returns one of the following:

  • 'GET'
  • 'HEAD'
  • 'POST'
  • 'PUT'

Upvotes: 6

giannis christofakis
giannis christofakis

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

hubrik
hubrik

Reputation: 1019

The solutions above are outdated.

As per Laravel documentation:

$method = $request->method();

if ($request->isMethod('post')) {
    //
}

Upvotes: 85

Tom
Tom

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

Marcin Orlowski
Marcin Orlowski

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

Related Questions