2014-12-08 33 views
14

So che uno può usare $request->get('my_param') o Input::get('my_param') per ottenere un parametro di richiesta POST o GET in Laravel (sto giocando con la versione v5/dev ora, ma è lo stesso per 4.2).In Laravel, come posso ottenere * solo * i parametri POST?

Ma come posso assicurarmi che il mio my_param sia venuto tramite un parametro POST e non sia stato solo da un ?my_param=42 aggiunto all'URL? (oltre ritornare al ol' $_POST e $_GET superglobals e gettando testability fuori dalla finestra)

(Nota: io so anche che il metodo Request::get mi darà il parametro POST per una richiesta POST, se sia un POST un URL/GET param con lo stesso nome esiste, ma ... ma se il parametro arriva tramite la stringa di query url, voglio un modo laravale-idiomatico per sapere questo)

risposta

12

Nella classe Illuminate\Http\Request (o in realtà la Symphony la classe si estende da Symfony\Component\HttpFoundation\Request) ci sono due variabili di classe che memorizzano i parametri di richiesta.

public $query - per parametri GET

public $request - per POST Parametri

Entrambi sono un'istanza Symfony\Component\HttpFoundation\ParameterBag che implementa un metodo get.

Ecco cosa si può fare (anche se non è molto carina)

$request = Request::instance(); 
$request->request->get('my_param'); 
+0

Grazie, questo è quello che mi serviva! – NeuronQ

+2

Oppure si potrebbe usare questa sintassi: '$ request = Input :: instance() -> request-> get ('my_param');' La stessa cosa però, solo sayin –

0

Perché cercare di complicare le cose quando si può fare facilmente quello che ti serve:

$posted = $_POST; 
+0

1. Non va bene per i test di unità/accettazione . 2. Non valido per i componenti che dipendono da Illuminate \ Http \ Request (ad esempio, se si utilizzerà l'adattatore ReactPHP per Laravel/Lumen). – barbushin

+0

Se possibile, non è necessario accedere direttamente ai campi $ _GET o $ _POST poiché potrebbero contenere dati senza caratteri di escape. – Dragas

Problemi correlati