检查请求是GET还是POST

Joe*_*oco 35 php post get laravel-4

在我的控制器/动作中:

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

有没有方法在Laravel检查该请求是否POST还是GET

Tom*_*Tom 155

根据Laravels文档,有一个Request方法来检查它,所以你可以这样做:

$method = Request::method();
Run Code Online (Sandbox Code Playgroud)

要么

if (Request::isMethod('post'))
{
// 
}
Run Code Online (Sandbox Code Playgroud)


小智 50

上述解决方案已过时.

根据Laravel文档:

$method = $request->method();

if ($request->isMethod('post')) {
    //
}
Run Code Online (Sandbox Code Playgroud)

  • 这适用于您将请求传递给函数的情况,例如`function myFunction (Request $request, $otherParams) { if($request->method == 'get') {} }` (3认同)
  • 或者只是在任何地方使用 `request()->isMethod('post')`,因为 `request()` 函数在 Laravel 中是全局注册的。 (3认同)

小智 18

我已经在 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;
    }
}
Run Code Online (Sandbox Code Playgroud)


gia*_*kis 7

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

routes.php文件

Route::post('url', YourController@yourPostMethod);
Run Code Online (Sandbox Code Playgroud)

在你的控制器/行动中

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

这同样适用于GET请求.

Route::get('url', YourController@yourGetMethod);
Run Code Online (Sandbox Code Playgroud)

  • Tom的解决方案(未选中)更好 (24认同)
  • 仅仅因为我相信它没有回答这个问题; 你对所说的内容有所了解,但对于非常简单的任务(以及添加服务器端验证时),我认为最好在单个控制器方法中处理. (3认同)

Pie*_*ant 6

$_SERVER['REQUEST_METHOD'] 用于此。

它返回以下之一:

  • '得到'
  • '头'
  • 'POST'
  • '放'


Mar*_*ski 6

使用Request::getMethod()来获得用于当前请求的方法,但这应该是很少需要为Laravel会打电话给你的控制器的正确的方法,根据请求类型(即getFoo()对GET和postFoo()对POST).