检查请求是GET还是POST

时间:2014-01-11 16:11:09

标签: php post get laravel-4

在我的控制器/动作中:

if(!empty($_POST))
{
    if(Auth::attempt(Input::get('data')))
    {
        return Redirect::intended();
    }
    else
    {
        Session::flash('error_message','');
    }
}

Laravel中是否有方法可以检查请求是POST还是GET

6 个答案:

答案 0 :(得分:142)

根据Laravels docs,有一种Request方法可以检查它,所以你可以这样做:

$method = Request::method();

if (Request::isMethod('post'))
{
// 
}

答案 1 :(得分:43)

The solutions above are outdated.

As per Laravel documentation:

$method = $request->method();

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

答案 2 :(得分:11)

我已经在laravel版本中解决了如下问题: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;
    }
}

答案 3 :(得分:7)

当然有一种方法可以找出请求的类型,But而不是你应该定义一个处理POST请求的路由,因此你不需要需要条件陈述。

routes.php文件

Route::post('url', YourController@yourPostMethod);

你的控制器/行动

if(Auth::attempt(Input::get('data')))
{
   return Redirect::intended();
}
//You don't need else since you return.
Session::flash('error_message','');

GET请求也是如此。

Route::get('url', YourController@yourGetMethod);

答案 4 :(得分:6)

使用Request::getMethod()来获取当前请求所使用的方法,但这很少需要,因为Laravel会调用控制器的正确方法,具体取决于请求类型(即getFoo()用于GET和{{ 1}}用于POST)。

答案 5 :(得分:5)

$_SERVER['REQUEST_METHOD']用于此目的。

它返回以下之一:

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