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 "?" ?
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
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 Request
class
.
http://example.com/path?page=2
Route::get('/path', function(Request $request){
dd($request->page);
});
//NOTE: Laravel automatically inject the request instance
//output
"2"
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);
$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}
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);
$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
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.
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);
}
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');
}
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'];
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.