【问题标题】:How to pass query string params to routes in Laravel4如何将查询字符串参数传递给 Laravel4 中的路由
【发布时间】:2013-12-17 17:55:05
【问题描述】:

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

api/v1/account?fields=email,acct_type

查询参数传递给路由控制器方法的位置,该方法具有如下签名:

public function index($cols)

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

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

为了清晰和灵活,我手动指定了所有路由(而不是使用Route::controllerRoute::resource),并且我总是路由到控制器和方法。

我创建了一个(全局)辅助函数,将“字段”查询字符串元素隔离到数组$cols 中,但在每个控制器的每个方法中调用该函数并不是 DRY。如何有效地将$cols 变量传递给我的所有Route::get 路由的控制器方法?或者,更一般地说,如何通过路由(或路由组)将查询字符串中的一个或多个额外参数有效地传递给控制器​​方法?我正在考虑使用过滤器,但这似乎有点不合时宜。

【问题讨论】:

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


    【解决方案1】:

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

    class BaseController extends Controller {
    
        protected $fields;
    
        public function __construct(){
    
            if (Input::has('fields')) {
                $this->fields = Input::get('fields');
            }
        }
    }
    

    之后 $fields 可以在 BaseController 子的每条路由中访问:

    class AccountApiController extends \BaseController {
    
        public function index()
        {
            dd($this->fields);
        }
    } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-02
      • 1970-01-01
      • 1970-01-01
      • 2014-03-02
      相关资源
      最近更新 更多