Abrufen von GET “?” Variable in Laravel

Lesezeit: 6 Minuten

Benutzer-Avatar
nur mein Freak

Hallo, ich erstelle eine API mit REST und Laravel nach Dies Artikel.

Alles funktioniert gut wie erwartet.

Jetzt möchte ich eine GET-Anforderung zuordnen, um eine Variable mit “?” zu erkennen.

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

Unten ist der Inhalt meiner routes.php :

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

Mein controllers/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 bekomme ich einen Parameter mit “?” ?

Benutzer-Avatar
Adamdunson

Werfen Sie einen Blick auf die $_GET und $_REQUEST Superglobale. So etwas wie das Folgende würde für Ihr Beispiel funktionieren:

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

BEARBEITEN

Entsprechend diesen Beitrag in den Laravel-Forenmüssen Sie verwenden Input::get()z.B,

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

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

  • Sie erhalten viel mehr Funktionalität aus der Verwendung von Input::get, Input::has, Input::all, Input::file usw. Die einzige Zeit, in der ich die Verwendung eines Super Global empfehle, ist, wenn Sie eine Reihe von Dateien hochladen, als Sie es tun müssen $_FILES verwenden.

    – Michael J. Calkins

    27. Februar 2013 um 22:31 Uhr


  • Für alle, die dies im Jahr 2016 lesen, ist der richtige Weg, Input in Laravels > v5.0 zu verwenden, dieser stackoverflow.com/a/34642837/1067293

    – Ramon Royo

    17. Mai 2016 um 10:42 Uhr


  • Dies ist nicht die Laravel-Methode, um Anforderungsparameter zu erhalten

    – Peter Chaula

    20. Dezember 2018 um 8:26 Uhr

  • Geben Sie bitte die Quelle an Input

    – Achim Krauss

    18. Dezember 2019 um 16:18 Uhr

  • Es sieht aus wie statt Input du sollst verwenden $request->input(): laravel.com/docs/8.x/requests#input. Der freigegebene Link in der Antwort über 404s für mich: laravel.com/docs/input#input

    – th3coop

    24. Juli 2021 um 18:47 Uhr

Benutzer-Avatar
Peter Chaula

Unter 5.3-8.0 verweisen Sie auf den Abfrageparameter, als ob er ein Mitglied von wäre Request class.

1. URL

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

2. In einem Routen-Callback oder einer Controller-Aktion mit der magischen Methode Request::__get()

Route::get('/path', function(Request $request){
 dd($request->page);
}); 

//or in your controller
public function foo(Request $request){
 dd($request->page);
}

//NOTE: If you are wondering where the request instance is coming from, Laravel automatically injects the request instance from the IOC container
//output
"2"

###3. Standardwerte Wir können auch einen Standardwert übergeben, der zurückgegeben wird, wenn ein Parameter nicht existiert. Es ist viel sauberer als ein ternärer Ausdruck, den Sie normalerweise mit den Anfrage-Globals verwenden würden

   //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. Anfragefunktion nutzen

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

Das Ursprünglich Der Parameter ist optional, daher kann er weggelassen werden

###5. Verwendung 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.8/requests

Benutzer-Avatar
Fil

Wir haben gerade eine ähnliche Situation und ab dieser Antwort verwende ich Laravel 5.6 Release.

Ich werde nicht Ihr Beispiel in der Frage verwenden, sondern meins, weil es verwandt ist.

Ich habe so eine Route:

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

Stellen Sie dann sicher, dass Sie in Ihrer Controller-Methode enthalten

use Illuminate\Http\Request;

und dies sollte sich über Ihrem Controller befinden, höchstwahrscheinlich ein Standardwert, wenn es mit generiert wird php artisanum nun eine Variable aus der URL zu erhalten, sollte sie so aussehen:

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

    // some codes here
  }

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

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

Ich hoffe das hilft.

Benutzer-Avatar
Ronak Dattani

Dies ist die beste Vorgehensweise. Auf diese Weise erhalten Sie die Variablen sowohl von der GET-Methode als auch von 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);
    }

Abfrageparameter werden wie folgt verwendet:

use Illuminate\Http\Request;

class MyController extends BaseController{

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

Benutzer-Avatar
Syed Waqas Buchary

Im Laravel 5.3 $start = Input::get('start'); kehrt zurück NULL

Um dies 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'];

Benutzer-Avatar
Der Milliardär

In Laravel 5.3

Ich möchte den Get-Parameter in meiner Ansicht anzeigen

Schritt 1: meine Route

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

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: In meiner Ansicht anzeigen

In meiner Ansicht können Sie es einfach wiederholen, indem Sie verwenden

{{ $myvalue }}

Also, wenn Sie dies in Ihrer URL haben

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

Dann wird [email protected] in Ihrer Ansichtsdatei gedruckt

hoffe das hilft jemandem.

  • Was Sie verwenden, ist kein Get-Parameter, sondern ein URL-Fragment.

    – Jan Schürmann

    26. Februar 2017 um 9:09 Uhr

  • Eines Tages wird jemand hier sein, der ein URL-Fragment braucht. Es ist besser zu versuchen als nicht. Danke trotzdem für die Info und Downvote 😡

    – Der Milliardär

    26. Februar 2017 um 10:30 Uhr

  • Sie erklären nicht einmal, dass das, was Sie verwenden, kein Get-Parameter ist. Dafür ist das Downvote da.

    – Jan Schürmann

    26. Februar 2017 um 12:11 Uhr

  • Das beantwortet die Frage leider nicht

    – Peter Chaula

    30. Mai 2017 um 18:56 Uhr

  • @The Dead Guy ausgezeichnet, das ist ein ausgezeichneter Trick für mich, upvote: D

    – Héctor Manuel Martínez Durán

    5. November 2019 um 0:09 Uhr

1333510cookie-checkAbrufen von GET “?” Variable in Laravel

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy