web-dev-qa-db-de.com

Get GET "?" variabel in Laravel

Hallo, ich erstelle API mit REST und Laravel nach this article.

Alles funktioniert wie erwartet.

Nun möchte ich die GET-Anfrage zuordnen, um die Variable mithilfe von "?" Zu erkennen.

Zum Beispiel: domain/api/v1/todos?start=1&limit=2

Unten ist der Inhalt meiner routen.php: 

Route::any('api/v1/todos/(:num?)', array(
    'as'   => 'api.todos',
    'uses' => '[email protected]'
));

meine Controller/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);   
            }
        }
    }
}

Wie erkennt man get-Parameter mit "?" ?

35
justmyfreak

Schauen Sie sich die $ _GET und $ _REQUEST superglobals an. Etwas wie das Folgende würde für Ihr Beispiel funktionieren:

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

EDIT

Laut diesem Beitrag in den Laravel-Foren müssen Sie Input::get() verwenden, z.

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

Siehe auch: http://laravel.com/docs/input#input

56
adamdunson

Es ist ziemlich einfach - und auch auf POST -Anfragen anwendbar. Ich habe nicht an anderen Laravel-Versionen getestet, aber in 5.3-5.7 referenzieren Sie den Abfrageparameter so, als ob er ein Mitglied der Variablen Requestclass wäre.

1. Url

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

2. In einer Route Rückruf- oder Controller-Aktion mit der magischen Methode Request :: __ get ()

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

3. Standardwerte

Wir können auch einen Standardwert übergeben, der zurückgegeben wird, wenn ein Parameter nicht vorhanden ist. Es rettet uns vor dieser ternären Magie

   //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. Anforderungsfunktion verwenden

$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'];

Der Parameter default ist optional, daher kann man ihn weglassen.

5. Verwenden von Request :: query ()

Während die Eingabemethode Werte aus der gesamten Anforderungsnutzlast (einschließlich der Abfragezeichenfolge) abruft, ruft die Abfragemethode nur Werte aus der Abfragezeichenfolge ab

//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. Verwendung der Anfrage Fassade

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

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

Weitere Informationen finden Sie in der offiziellen Dokumentation https://laravel.com/docs/5.7/requests

16
peter

Wir haben jetzt eine ähnliche Situation und seit dieser Antwort verwende ich Laravel 5.6.

Ich werde Ihr Beispiel nicht in der Frage verwenden, sondern in meinem, weil es sich zwar um etwas anderes handelt.

Ich habe eine Route wie diese:

Route::name('your.name.here')->get('/your/uri', '[email protected]');

Stellen Sie dann in Ihrer Controller-Methode sicher, dass Sie sie einschließen 

use Illuminate\Http\Request;

und dies sollte sich über Ihrem Controller befinden, höchstwahrscheinlich ein Standardwert, wenn er mithilfe von php artisan generiert wird. Nun, um Variablen aus der URL zu erhalten, sollte er wie folgt aussehen:

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

    // some codes here
  }

Unabhängig vom HTTP-Verb kann die Methode input () verwendet werden, um Benutzereingaben abzurufen.

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

Ich hoffe das hilft.

5
Fil

Dies ist die beste Vorgehensweise. Auf diese Weise erhalten Sie die Variablen von der GET-Methode sowie der POST -Methode

    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

Abfrageparameter werden wie folgt verwendet:

use Illuminate\Http\Request;

class MyController extends BaseController{

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

In laravel 5.3 $start = Input::get('start'); gibt NULL zurück

Um das zu lösen 

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

In Laravel 5.3

Ich möchte den get param in meiner Ansicht zeigen

Schritt 1: meine Route

Route::get('my_route/{myvalue}', '[email protected]');

Schritt 2: Schreiben Sie eine Funktion in Ihren Controller

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

Jetzt geben Sie den Parameter zurück, den Sie an die Ansicht übergeben haben

Schritt 3: Zeigen Sie es in meiner Ansicht

In meiner Sicht kann ich es einfach mit wiederholen

{{ $myvalue }}

Wenn Sie dies in Ihrer URL haben

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

Dann wird [email protected] in Ihrer Ansichtsdatei gedruckt

hoffe das hilft jemandem.

0
The Dead Guy