web-dev-qa-db-ja.com

Laravelの同じパターンに対してGETとPOSTをルーティングする方法は?

Laravel 4でこれら2行を1つに結合する方法は誰でも知っていますか?

Route::get('login', 'AuthController@getLogin');
Route::post('login', 'AuthController@postLogin');

したがって、両方を記述する必要はなく、どちらも「同じ」メソッドを使用するので、一方を記述するだけで済みますが、URLはsite.com/loginへのリダイレクトではなくsite.com/auth/loginのままです。

CIにはURLが同じままでコントローラーが表示されないようなものがあることを覚えているので、興味があります。

$route['(method1|method2)'] = 'controller/$1';
33
enchance

次を試すことができます:

Route::controller('login','AuthController');

次に、AuthController classこれらのメソッドを実装します。

public function getIndex();
public function postIndex();

それは動作するはずです;)

7
Mithredate

ドキュメントは言う...

Route::match(array('GET', 'POST'), '/', function()
{
    return 'Hello World';
});

ソース: http://laravel.com/docs/routing

58
OrtegaGuillermo

以下のコードを参照してください。

Route::match(array('GET','POST'),'login', 'AuthController@login');
33
webnology

以下を使用して、ルートのすべてのHTTP動詞を組み合わせることができます。

Route::any('login', 'AuthController@login');

これは、GETPOST HTTP動詞の両方に一致します。また、PUTPATCHおよびDELETEにも一致します。

24
Rubens Mariuzzo
Route::any('login', 'AuthController@login');

およびコントローラー内:

if (Request::isMethod('post'))
{
// ... this is POST method
}
if (Request::isMethod('get'))
{
// ... this is GET method
}
...
12
Sid
Route::match(array('GET', 'POST', 'PUT'), "/", array(
    'uses' => 'Controller@index',
    'as' => 'index'
));
4
Igor Parra

laravel 5.1では、これは暗黙的なコントローラーによって実現できます。laravelドキュメント

Route::controller('users', 'UserController');

次に、コントローラーにメソッドを追加します。メソッド名は、応答するHTTP動詞で始まり、その後にURIのタイトルケースバージョンが続く必要があります。

<?php

namespace App\Http\Controllers;

class UserController extends Controller
{
    /**
     * Responds to requests to GET /users
     */
    public function getIndex()
    {
        //
    }

    /**
     * Responds to requests to GET /users/show/1
     */
    public function getShow($id)
    {
        //
    }

    /**
     * Responds to requests to GET /users/admin-profile
     */
    public function getAdminProfile()
    {
        //
    }

    /**
     * Responds to requests to POST /users/profile
     */
    public function postProfile()
    {
        //
    }
}
1
Amir

最新のドキュメントによると、それは

Route::match(['get', 'post'], '/', function () {
    //
});

https://laravel.com/docs/routing

1
Rinto George

そうです、私は自分の携帯電話を使って答えているので、これをテストしていません(正しく覚えていれば、ドキュメントにもありません)。ここに行く:

Route::match('(GET|POST)', 'login',
    'AuthController@login'
);

これでうまくいくはずです。そうでない場合、Taylorはそれをコアから削除しました。これは、誰も使用していないことを意味します。

0
Mike Rockétt