6

私は多かれ少なかれLaravel 4に慣れていません。これまでルートを使用したことはありませんが、通常はurl/controller/actionとバックエンドルーティングに慣れています。ルートとコントローラーのドキュメントを数回読み、いくつかのチュートリアルを読んだので、すべてのコントローラーとアクションのルートを作成せずにこれを機能させる方法を見つけようとしています。

私は何かを試しました

Route::get('{controller}/{action}', function($controller, $action = 'index'){
    return $controller."@".$action;
});

さて、これはうまくいかないので間違っていることはわかっていますが、何が欠けていますか?ほとんどのチュートリアルやもので、多かれ少なかれすべてのコントローラーとアクションのルートが次のように表示されます。

Route::get('/controller/action' , 'ControllerName@Action');

これはばかげているようで、時間の無駄のように思えます。

とにかく私が望むものを達成することはありますか?

4

3 に答える 3

7

より自動化されたルーティングを探している場合、これは Laravel 4 の方法になります。

ルート:

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

コントローラー (この場合は UsersController.php):

public function getIndex()
{
    // routed from GET request to /users
}

public function getProfile()
{
    // routed from GET request to /users/profile
}

public function postProfile()
{
    // routed from POST request to /users/profile
}

public function getPosts($id)
{
    // routed from GET request to: /users/posts/42
}

The Shift Exchange が述べたように、詳細な方法で行うことにはいくつかの利点があります。彼がリンクした優れた記事に加えて、各ルートの名前を作成できます。次に例を示します。

Route::get("users", array(
    "as"=>"dashboard",
    "uses"=>"UsersController@getIndex"
));

次に、アプリケーションで URL を作成するときに、ヘルパーを使用して名前付きルートへのリンクを生成します。

$url = URL::route('dashboard');

リンクは、コントローラー/アクションへの変更から将来的に証明されます。

自動ルーティングでも機能するアクションへのリンクを直接生成することもできます。

$url = URL::action('UsersController@getIndex');
于 2013-08-12T06:16:34.973 に答える