如何在Laravel中为相同的模式路由GET和POST?

enc*_*nce 33 php laravel laravel-routing

有没有人知道Laravel 4将这两条线合二为一的方式?

Route::get('login', 'AuthController@getLogin');
Route::post('login', 'AuthController@postLogin');
Run Code Online (Sandbox Code Playgroud)

因此,而不是不得不写两个你只需要编写一个,因为他们都使用"相同"的方法,但也仍然URL作为site.com/login重定向而不是对site.com/auth/login

我很好奇,因为我记得CI有类似的东西,其中URL保持不变,控制器永远不会显示:

$route['(method1|method2)'] = 'controller/$1';
Run Code Online (Sandbox Code Playgroud)

小智 61

文件说......

Route::match(array('GET', 'POST'), '/', function()
{
    return 'Hello World';
});
Run Code Online (Sandbox Code Playgroud)

来源:http: //laravel.com/docs/routing

  • 这个答案更准确. (3认同)
  • 对不起,这又是如何得到这么多的赞成票?是的,它解释了如何使用GET和POST,但没有说明如何根据请求类型调用不同的方法. (3认同)

小智 34

请参阅以下代码.

Route::match(array('GET','POST'),'login', 'AuthController@login');
Run Code Online (Sandbox Code Playgroud)

  • 正确回答问题的唯一答案。 (2认同)

Rub*_*zzo 24

您可以使用以下命令组合路径的所有HTTP谓词:

Route::any('login', 'AuthController@login');
Run Code Online (Sandbox Code Playgroud)

这将匹配两个GETPOSTHTTP动词.它也将匹配PUT,PATCH&DELETE.

  • @enchance,你可以检查它是`GET`或`POST`:`if(Request :: isMethod('post'))`````// ...``}` (2认同)

Sid*_*Sid 12

Route::any('login', 'AuthController@login');
Run Code Online (Sandbox Code Playgroud)

在控制器中:

if (Request::isMethod('post'))
{
// ... this is POST method
}
if (Request::isMethod('get'))
{
// ... this is GET method
}
...
Run Code Online (Sandbox Code Playgroud)

  • 这是一个更好的答案。谢谢 (3认同)

Rin*_*rge 8

根据最新的文档,它应该是

Route::match(['get', 'post'], '/', function () {
    //
});
Run Code Online (Sandbox Code Playgroud)

https://laravel.com/docs/routing


Mit*_*ate 7

您可以尝试以下方法:

Route::controller('login','AuthController');
Run Code Online (Sandbox Code Playgroud)

然后在您的AuthController class实现中这些方法:

public function getIndex();
public function postIndex();
Run Code Online (Sandbox Code Playgroud)

它应该工作;)

  • 未来的注意事项:[隐式控制器在Laravel 5.2中已弃用,将来会被删除](http://benjaminkohl.com/post/implicit-controller-routing-is-deprecated-in-laravel-5-2) . (7认同)

Igo*_*rra 5

Route::match(array('GET', 'POST', 'PUT'), "/", array(
    'uses' => 'Controller@index',
    'as' => 'index'
));
Run Code Online (Sandbox Code Playgroud)