我正在 Laravel 4 中编写一个 api。我想将查询字符串参数传递给我的 Controller 。具体来说,我想允许这样的事情:
api/v1/account?fields=email,acct_type
其中查询参数被传递到路由 Controller 方法,该方法具有如下签名:
public function index($cols)
routes.php 中的路由如下所示:
Route::get('account', 'AccountApiController@index');
为了清晰和灵活性,我手动指定所有路由(而不是使用 Route::controller
或 Route::resource
),并且我始终路由到 Controller 以及方法。
我创建了一个(全局)辅助函数,将“fields”查询字符串元素隔离到数组 $cols
中,但在每个 Controller 的每个方法中调用该函数并不干燥。如何有效地将 $cols
变量传递给我的所有 Route::get
路由的 Controller 方法?或者,更一般地说,如何有效地将一个或多个额外参数从查询字符串通过路由(或一组路由)传递到 Controller 方法?我正在考虑使用过滤器,但这似乎有点超出标签范围。
最佳答案
您可能想在 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);
}
}
关于api - 如何将查询字符串参数传递给 Laravel4 中的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20321274/