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';
次を試すことができます:
Route::controller('login','AuthController');
次に、AuthController class
これらのメソッドを実装します。
public function getIndex();
public function postIndex();
それは動作するはずです;)
ドキュメントは言う...
Route::match(array('GET', 'POST'), '/', function()
{
return 'Hello World';
});
以下のコードを参照してください。
Route::match(array('GET','POST'),'login', 'AuthController@login');
以下を使用して、ルートのすべてのHTTP動詞を組み合わせることができます。
Route::any('login', 'AuthController@login');
これは、GET
とPOST
HTTP動詞の両方に一致します。また、PUT
、PATCH
およびDELETE
にも一致します。
Route::any('login', 'AuthController@login');
およびコントローラー内:
if (Request::isMethod('post'))
{
// ... this is POST method
}
if (Request::isMethod('get'))
{
// ... this is GET method
}
...
Route::match(array('GET', 'POST', 'PUT'), "/", array(
'uses' => 'Controller@index',
'as' => 'index'
));
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()
{
//
}
}
最新のドキュメントによると、それは
Route::match(['get', 'post'], '/', function () {
//
});
そうです、私は自分の携帯電話を使って答えているので、これをテストしていません(正しく覚えていれば、ドキュメントにもありません)。ここに行く:
Route::match('(GET|POST)', 'login',
'AuthController@login'
);
これでうまくいくはずです。そうでない場合、Taylorはそれをコアから削除しました。これは、誰も使用していないことを意味します。