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路由的控制器方法?或者,更一般地说,如何通过路由(或路由组)将查询字符串中的一个或多个额外参数有效地传递给控制器​​方法?我正在考虑使用过滤器,但这似乎有点不合时宜。

4

1 回答 1

4

你可能想在你的 BaseController 中实现它。这是可能的解决方案之一:

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 回答