59

こんにちは私はこの記事に続いてRESTとLaravelを使用してAPIを作成しています。

すべてが期待どおりに機能します。

ここで、「?」を使用して変数を認識するようにGETリクエストをマップします。

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

以下は私の内容ですroutes.php

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

私の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);   
            }
        }
    }
}

「?」を使用してパラメータを取得するにはどうすればよいですか??

4

8 に答える 8

72

$_GETおよび$_REQUESTスーパーグローバルを見てください。次のようなものがあなたの例で機能します:

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

編集

Laravelフォーラムのこの投稿によるとInput::get()、たとえば、

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

参照:http://laravel.com/docs/input#input

于 2013-02-26T04:02:47.463 に答える
43

5.3-8.0では、クエリパラメータをのメンバーであるかのように参照しますRequest class

1.URL

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

2.マジックメソッド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。デフォルト値パラメータが存在しない場合に返されるデフォルト値を渡すこともできます。これは、リクエストグローバルで通常使用する3項式よりもはるかにクリーンです。

   //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。リクエスト機能を使う

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

デフォルトのパラメータはオプションであるため、省略できます

###5。Request :: query()の使用

inputメソッドはリクエストペイロード全体(クエリ文字列を含む)から値を取得しますが、queryメソッドはクエリ文字列からのみ値を取得します

//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。リクエストファサードの使用

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

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

詳細については、公式ドキュメントhttps://laravel.com/docs/5.8/requestsをご覧ください。

于 2017-01-24T20:07:55.483 に答える
9

現在、同様の状況があり、この回答の時点で、私はlaravel5.6リリースを使用しています。

質問ではあなたの例を使用しませんが、関連しているので私の例を使用します。

私はこのようなルートを持っています:

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

次に、コントローラーメソッドに必ず含めてください

use Illuminate\Http\Request;

これはコントローラーの上にある必要があります。おそらくデフォルトで、を使用して生成された場合php artisan、URLから変数を取得するには、次のようになります。

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

    // some codes here
  }

HTTP動詞に関係なく、input()メソッドを使用してユーザー入力を取得できます。

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

この助けを願っています。

于 2018-04-21T11:56:10.250 に答える
7

これがベストプラクティスです。このようにして、GETメソッドと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);
    }
于 2016-10-01T19:10:59.367 に答える
5

クエリパラメータは次のように使用されます。

use Illuminate\Http\Request;

class MyController extends BaseController{

    public function index(Request $request){
         $param = $request->query('param');
    }
于 2016-10-01T19:05:04.890 に答える
3

Laravel5.3では $start = Input::get('start');リターンNULL

これを解決するには

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'];
于 2016-12-03T15:29:15.587 に答える
0

Laravel5.3では

ビューにgetparamを表示したい

ステップ1:私のルート

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

ステップ2:コントローラー内に関数を書く

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

これで、ビューに渡したパラメータが返されます

ステップ3:ビューに表示する

私のビューの中であなたは私が使用することによってそれを単にエコーすることができます

{{ $myvalue }}

だからあなたがあなたのURLにこれを持っているなら

http://127.0.0.1/yourproject/refral/this@that.com

次に、ビューファイルにthis@that.comを出力します

これが誰かに役立つことを願っています。

于 2017-02-26T08:40:02.547 に答える
0

$_GETLaravelが変数を取得する簡単な方法を提供してくれるので、ネイティブのphpリソースを使用するのはあまり良いことではありません。標準の問題として、可能な限り、純粋なPHPの代わりにlaravel自体のリソースを使用してください。

Laravel(Laravel 5.x以降)でGETによって変数を取得するには、少なくとも2つのモードがあります。

モード1

ルート:

Route::get('computers={id}', 'ComputersController@index');

リクエスト(POSTMANまたはクライアント...):

http://localhost/api/computers=500

{id}Controler-次の方法でControlllerのパラメータにアクセスできます。

public function index(Request $request, $id){
   return $id;
}

モード2

ルート:

Route::get('computers', 'ComputersController@index');

リクエスト(POSTMANまたはクライアント...):

http://localhost/api/computers?id=500

?idControler-次の方法でControlllerのパラメータにアクセスできます。

public function index(Request $request){
   return $request->input('id');
}
于 2020-04-22T15:13:29.010 に答える