api - 如何将查询字符串参数传递给 Laravel4 中的路由

标签 api laravel-4 query-string laravel-routing

我正在 Laravel 4 中编写一个 api。我想将查询字符串参数传递给我的 Controller 。具体来说,我想允许这样的事情:

api/v1/account?fields=email,acct_type

其中查询参数被传递到路由 Controller 方法,该方法具有如下签名:

public function index($cols)

routes.php 中的路由如下所示:

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

为了清晰和灵活性,我手动指定所有路由(而不是使用 Route::controllerRoute::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/

相关文章:

arrays - 如何在 http header 中传递数组?

java - 您编写的每个方法都使用 Javadoc 吗?

php - Laravel 4 总是返回 HTTP 状态码 200

api - 使用 Mixcloud API,您将如何搜索包含特定轨道的节目?

mysql - Laravel 迁移 - 未创建表

css - Twitter Bootstrap、导航栏和 Laravel

c# - 需要有关 asp.net 中查询字符串的帮助

magento - 防止 Magento 缓存查询字符串,例如 limit param

c# - 将键盘宏命令发送到游戏窗口

ios - iOS 上 api 响应缓存的最佳策略