2

Laravel 4 で API を作成しています。クエリ文字列パラメーターをコントローラーに渡したいと思います。具体的には、次のようなものを許可したい:

api/v1/account?fields=email,acct_type

クエリ パラメータは、次のようなシグネチャを持つルーティング コントローラ メソッドに渡されます。

public function index($cols)

routes.php のルートは次のようになります。

Route::get('account', 'AccountApiController@index');

Route::controller明快さと柔軟性のために ( orを使用するのではなくRoute::resource) すべてのルートを手動で指定しており、常にコントローラーとメソッドにルーティングしています。

「フィールド」クエリ文字列要素を配列$colsに分離する (グローバル) ヘルパー関数を作成しましたが、すべてのコントローラーのすべてのメソッド内でその関数を呼び出すことは DRY ではありません。$cols変数をすべてのRoute::getルートのコントローラー メソッドに効果的に渡すにはどうすればよいですか? または、より一般的には、ルート (またはルートのグループ) を介してクエリ文字列から 1 つまたは複数の追加パラメーターをコントローラー メソッドに効率的に渡すにはどうすればよいでしょうか? フィルターの使用を考えていますが、それは少し適応外のようです。

4

1 に答える 1

4

これを BaseController に実装することをお勧めします。これは可能な解決策の 1 つです。

class BaseController extends Controller {

    protected $fields;

    public function __construct(){

        if (Input::has('fields')) {
            $this->fields = Input::get('fields');
        }
    }
}

その後、BaseController の子であるすべてのルートで $fields にアクセスできます。

class AccountApiController extends \BaseController {

    public function index()
    {
        dd($this->fields);
    }
} 
于 2013-12-02T06:53:22.173 に答える