27

Routes.php にルートを追加し続けると、ルートはどんどん大きくなります。それらをどのように整理しますか?

4

5 に答える 5

24

他の回答に記載されているすべてのベスト プラクティスを採用した後でも、つまり、リソース コントローラー、ルート グループなどを使用します。

昔ながらの方法でルートファイルを単純に「含める」ことができます。このコメントでChris Gが述べたように。

簡単なディレクトリ構造を作成し、route.php ファイルにルート ファイルを含めることができます。

../myroutes
 --route-type-1.php
 --route-type-2.php 

route.php ファイル内

include('myroutes/route-type-1.php');

そこには何の問題もありません。これは、ルートがパッケージに含まれる方法です。

http://laravel.com/docs/packages#package-routing

于 2014-01-22T19:27:27.590 に答える
14

私は通常、グループルートを使用して(コントローラーが関連している場合は同じタイプのフィルタリングが必要になる傾向があるため)、それらを整理するか、より小さなルートファイルが必要な場合は、コントローラーを登録して追加の検証チェックを行うことができますコントローラ自体の内部のURLのパラメータの。

于 2013-02-16T01:02:20.423 に答える
5

実際、ルートはスリムに保つ必要があります。コードをコントローラーに移動し、ルーティングを使用して登録し、リダイレクトします。コードが自動的に編成されるように、ファイルごとに 1 つのコントローラーを格納するのが慣習です。

これを見てください

//  application/controllers/sample.php
class Sample_Controller extends Base_Controller
{
    public function action_index()
    {
        echo "Wellcome to the root" //www.testapp.com/sample
    }

    public function action_edit()
    {
        echo "Some editing functions here." //www.testapp.com/sample/edit
    }

     public function action_whatsoever()
    {
        echo "Put here whatever you like." //www.testapp.com/sample/whatsoever
    }

}

controller-action ルートは次のように登録できます。

//application/routs.php
Route::controller('admin::home');

とてもまっすぐで快適です。

アップデート:

アプリケーション全体のこの行を使用して、すべてのコントローラーを自動的に登録することもできます。

Route::controller(Controller::detect());

または、すべてのアクションを含むコントローラー:

Route::controller(Controller::detect('yourcontroller'));
于 2013-02-22T14:47:53.743 に答える
2

または、ルートを別のファイルに保存してから、include を使用してそれらのファイルを取得することもできます。

Route::group(stuff,function(){
  include __DIR__.DS.'routes1.php';
  include __DIR__.DS.'routes2.php';
});

これにより、コードが多すぎる場合にハンドルをソートするためのきれいな方法が得られます。また、言及することもできます

Route::controller(Controller::detect());

そして、それに応じてコントローラーを構成します。

class Account_Controller extends Base_Controller {
  public function action_login() {
      //Login
  }

  public function action_logout() {
      ...
  }

一部の関数にパラメータを渡す必要がある場合:

  public function dosomething($input){
     ...
  }

次のようにこれらの機能にアクセスできます。

  http://yourapp/account/login
  http://yourapp/account/logout

次に、パラメーターを URL に追加することで関数を呼び出すことができます。

  http://yourapp.account/dosomething/somedata

いくつかのメソッドを保護する必要がある場合は、action_ なしでそれらを追加して、パブリックがアクセスできないようにします。

または、基本的に、取得したクエリのタイプに基づいて何らかの入力に応答する方法である安らかなメソッドに切り替えることもできます。通常、ユーザーがログインデータを投稿していることを意味する「POST」リクエストを受け取った場合、それに応じて応答できます。これにより、関数の数を削減して、安らかな方法の詳細についてこの素晴らしい記事を読むことができますライアン・トマヤコhttp://tomayko.com/writings/rest-to-my-wife

restful メソッドを使用するには、restful を true に指定し、関数名の前に action キーワードを追加する必要があります。

public $restful = true;
public function get_login() {
 return View::make('login');
 //This function is accessible using GET request to http://yourapp/login
}

public function post_login() {
   $data = Input::get();
   //do something using the Input data
   //This function is accessible using a POST request to http://yourapp/login
}

このようにして、ユーザーの資格情報を処理および検証するための別のルートの必要性を排除できます!

安らかなメソッドを使用して特定のメソッドにアクセスしたくない場合は、関数名にアクション キーワード (get,post,...) を含めないでください。

安らかなメソッドとスマート ルーティングを組み合わせることは、コードをクリーンで安全に保つための最も効率的な方法です。

于 2013-04-18T03:18:33.453 に答える