web-dev-qa-db-fra.com

Obtenir GET "?" variable en laravel

Bonjour, je crée une API avec REST et Laravel après this article.

Tout fonctionne bien comme prévu.

Maintenant, je veux mapper la requête GET pour reconnaître la variable en utilisant "?".

Par exemple: domain/api/v1/todos?start=1&limit=2

Ci-dessous le contenu de mon routes.php: 

Route::any('api/v1/todos/(:num?)', array(
    'as'   => 'api.todos',
    'uses' => 'api.todos@index'
));

mes contrôleurs/api/todos.php:

class Api_Todos_Controller extends Base_Controller {

    public $restful = true;

    public function get_index($id = null) {
        if(is_null($id)) {
            return Response::eloquent(Todo::all(1));

        } else {
            $todo = Todo::find($id);
            if (is_null($todo)) {
                return Response::json('Todo not found', 404);
            } else {
                return Response::eloquent($todo);   
            }
        }
    }
}

Comment reconnaître un paramètre en utilisant "?" ?

35
justmyfreak

Regardez les $ _GET et $ _REQUEST superglobals. Quelque chose comme ce qui suit pourrait fonctionner pour votre exemple:

$start = $_GET['start'];
$limit = $_GET['limit'];

MODIFIER

Selon ce message sur les forums laravel , vous devez utiliser Input::get(), par exemple,

$start = Input::get('start');
$limit = Input::get('limit');

Voir aussi: http://laravel.com/docs/input#input

56
adamdunson

C'est assez simple - et applicable aussi aux requêtes POST. Je n'ai pas testé d'autres versions de Laravel, mais vous avez référencé le paramètre de requête comme s'il était membre de la variable Requestclass.

1. Url

http://example.com/path?page=2

2. Dans un rappel de route ou une action du contrôleur utilisant la méthode magique Request :: __ get ()

Route::get('/path', function(Request $request){
 dd($request->page);
}); 
//NOTE: Laravel automatically inject the request instance
//output
"2"

3. Valeurs par défaut

Nous pouvons également transmettre une valeur par défaut qui est renvoyée si un paramètre n'existe pas. Cela nous sauve de cette magie ternaire

   //wrong way to do it in Laravel
   $page = isset($_POST['page']) ? $_POST['page'] : 1; 

   //do this instead
   $request->get('page', 1);

   //returns page 1 if there is no page
   //NOTE: This behaves like $_REQUEST array. It looks in both the
   //request body and the query string
   $request->input('page', 1);

4. Utilisation de la fonction de requête

$page = request('page', 1);
//returns page 1 if there is no page parameter in the query  string
//this is the equivalent of
$page = 1; 
if(!empty($_GET['page'])
   $page = $_GET['page'];

Le paramètre default est facultatif, on peut donc l'omettre}

5. Utiliser Request :: query ()

Alors que la méthode d'entrée récupère les valeurs de l'ensemble de la charge de la demande (y compris la chaîne de requête), la méthode de requête extraira uniquement les valeurs de la chaîne de requête

//this is the equivalent of retrieving the parameter
//from the $_GET global array
$page = $request->query('page');

//with a default
$page = $request->query('page', 1);

6. Utilisation de la requête façade

$page = Request::get('page');

//with a default value
$page = Request::get('page', 1);

Vous pouvez en lire plus dans la documentation officielle https://laravel.com/docs/5.7/requests

16
peter

Nous avons une situation similaire en ce moment et à partir de cette réponse, j'utilise laravel version 5.6.

Je n'utiliserai pas votre exemple dans la question, mais le mien, car il est lié.

J'ai itinéraire comme ça:

Route::name('your.name.here')->get('/your/uri', 'YourController@someMethod');

Ensuite, dans votre méthode de contrôleur, assurez-vous d'inclure 

use Illuminate\Http\Request;

et ceci devrait être au-dessus de votre contrôleur, probablement un défaut, s'il est généré avec php artisan, maintenant pour obtenir une variable à partir de l'URL, il devrait ressembler à ceci:

  public function someMethod(Request $request)
  {
    $foo = $request->input("start");
    $bar = $request->input("limit");

    // some codes here
  }

Indépendamment du verbe HTTP, la méthode input () peut être utilisée pour extraire une entrée utilisateur.

https://laravel.com/docs/5.6/requests#retrieving-input

J'espère que cette aide.

5
Fil

C'est la meilleure pratique. De cette façon, vous obtiendrez les variables de la méthode GET ainsi que de la méthode POST

    public function index(Request $request) {
            $data=$request->all();
            dd($data);
    }
//OR if you want few of them then
    public function index(Request $request) {
            $data=$request->only('id','name','etc');
            dd($data);
    }
//OR if you want all except few then
    public function index(Request $request) {
            $data=$request->except('__token');
            dd($data);
    }
3
Ronak Dattani

Les paramètres de requête sont utilisés comme ceci:

use Illuminate\Http\Request;

class MyController extends BaseController{

    public function index(Request $request){
         $param = $request->query('param');
    }
2
malhal

Dans laravel 5.3 $start = Input::get('start'); renvoie NULL

Pour résoudre cela 

use Illuminate\Support\Facades\Input;

//then inside you controller function  use

$input = Input::all(); // $input will have all your variables,  

$start = $input['start'];
$limit = $input['limit'];
2
Waqas Bukhary

Dans laravel 5.3

Je veux montrer le get param à mon avis

Étape 1: mon itinéraire

Route::get('my_route/{myvalue}', 'myController@myfunction');

Étape 2: écrivez une fonction dans votre contrôleur

public function myfunction($myvalue)
{
    return view('get')->with('myvalue', $myvalue);
}

Maintenant, vous retournez le paramètre que vous avez passé à la vue.

Étape 3: affichage dans ma vue

À mon avis, je peux simplement y répondre en utilisant

{{ $myvalue }}

Donc, si vous avez cela dans votre URL

http://127.0.0.1/yourproject/refral/[email protected]

Ensuite, il imprimera [email protected] dans votre fichier de vue

espérons que cela aide quelqu'un.

0
The Dead Guy