api - una - recibir parametros en laravel
Cómo pasar los parámetros de cadena de consulta a las rutas en Laravel4 (1)
Estoy escribiendo una API en Laravel 4. Me gustaría pasar parámetros de cadena de consulta a mis controladores. Específicamente, quiero permitir algo como esto:
api/v1/account?fields=email,acct_type
donde los parámetros de consulta se pasan al método del controlador enrutado que tiene una firma como esta:
public function index($cols)
La ruta en routes.php se ve así:
Route::get(''account'', ''AccountApiController@index'');
Estoy especificando manualmente todas mis rutas para mayor claridad y flexibilidad (en lugar de usar Route::controller
o Route::resource
) y siempre estoy enrutando a un controlador y a un método.
Hice una función auxiliar (global) que aísla el elemento de cadena de consulta ''fields'' en una matriz $cols
, pero llamar a esa función dentro de cada método de cada controlador no es DRY. ¿Cómo puedo pasar efectivamente la variable $cols
a todos mis métodos de controlador Route::get
routes? O, de manera más general, ¿cómo puedo pasar eficientemente uno o más parámetros adicionales desde una cadena de consulta a través de una ruta (o grupo de rutas) a un método de controlador? Estoy pensando en usar un filtro, pero parece un poco fuera de etiqueta.
Es posible que desee implementar esto en su BaseController. Esta es una de las posibles soluciones:
class BaseController extends Controller {
protected $fields;
public function __construct(){
if (Input::has(''fields'')) {
$this->fields = Input::get(''fields'');
}
}
}
Después de que $ se puede acceder a los campos en cada ruta que es hijo de BaseController:
class AccountApiController extends /BaseController {
public function index()
{
dd($this->fields);
}
}