web-dev-qa-db-ja.com

Laravel 5 / Lumen Request Header?

だから私はこれをどうやってやるかわからないので、いくつかのことを試しましたが、以下にリストしますが、httpリクエストで送信された情報をPHP変数。

Chromeからのビューです。送信したいリクエストを送信している私の郵便配達員。注「pubapi」は「ヘッダー」です。

PostMan View

ここに記載されているように( http://Lumen.laravel.com/docs/requests )Lumenのリクエストをいじっていますが、以下を使用して表示することを試みましたが、明らかに働いています。

echo Request::all();

私はこれを自分のコントローラーに入れています...

use Illuminate\Http\Request;

私のコントローラーで。

それでは、「pubapi」を送信しているヘッダーをコントローラーのphp変数に保存すると言うことができますか?

[〜#〜] edit [〜#〜]

これが役立つかどうかはわかりませんが、Laravel frameworks docsを見ると私はこれを見ています http://laravel.com/api/5.0/Illuminate/Http/Request.html# method_header これを試みるとコード内で同じエラーがスローされるため、たとえば次のコードを試したところ、同じエラーが発生しました。

echo Request::header('pubapi');
19
kevingilbert100

Illuminate\Http\RequestRequestに変更してください。

- use Illuminate\Http\Request;
+ use Request;
18
balintant

2つのレベルでLaravelリクエストオブジェクトを誤解しています。

まず、取得しているエラーは、ファサードではなくオブジェクトを参照していたためです。ファサードには、静的メソッド呼び出しを非静的メソッドに転送する方法があります。

次に、値をヘッダーとして送信していますが、要求パラメーターにアクセスしようとしています。これはあなたが望むものを決して与えることはありません。

次のようなテストルートを作成して、目的の例を簡単に確認できます。

Route::match(['get','post'], '/test', function (Illuminate\Http\Request $request) {
    dd($request->headers->all());
});

このルートに投稿すると、ヘッダーが表示されます。ヘッダーの1つはpubapiです。ルートメソッドの定義は、リクエストの送信方法(GETまたはPOST)と一致することに注意してください。

これをコントローラーArticleControllerに適用してみましょう。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ArticleController extends Controller
{
    public function index(Request $request)
    {
        $pubapi = $request->header('pubapi'); // string
        $headers = $request->headers->all(); // array
        /*
          $pubapi === $headers['pubapi']
        */
    }
}
32
Qevo

を使用して

echo app('request')->header('pubapi');

の代わりに

echo Request::header('pubapi');

完璧に動作するようです。誰かがこれがなぜ機能し、私の元の方法は機能しなかったのかについて追加の説明を提供できますか?

11
kevingilbert100

実際には静的に呼び出しているため、適切なRequestクラスを取得せずにエラーをスローしているため、次のようにできます

use Illuminate\Http\Request;

//inside your controller
class YourClass extends Controller{
   public function yourFunction(Request $request){
        //for getting all the request
        dd($request->all());

        //for getting header content
        dd($request->header('pubapi);
   }
}
1
Shahrukh Anwar