9
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

エラー:Non-static method Illuminate\Http\Request::input() should not be called staticallyの解決法

Last updated at Posted at 2020-04-12

Illuminate\Http\Requestクラスと、Requestファサードを同時に使う

コントローラを作成して、Request $requestのようにRequestクラスを利用して、ビュー側から送った値を取り出せます。

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class PostController extends Controller
{
    public function index(Request $request)
    {
        //Requestクラスを利用
        $result = $request->post;

        return view('home', compact('result'));
    }
}

しかし、ここでRequestファサードも同時に使いたいときはどうすればよいでしょうか。
単純に下のようにしてみます。

public function index(Request $request)
    {
        $result = $request->post;
        
     //Requestファサードを利用
        $name = Request::input('name');

        return view('home', compact('result', 'name'));
    }

しかし、これを実行すると、エラーが出てしまいます。

 Non-static method Illuminate\Http\Request::input() should not be called statically

これは、

use Illuminate\Http\Request;

で、Requestクラスを呼んでいるのに、Request::input()という、Staticで使っちゃダメですよってことを言っているわけです。

そこで、下のコードを加えてやると、無事にRequestファサードとして使えるようになるんですが、

use Request;

次は、

Cannot use Request as Request because the name is already in use

というエラーが出てしまいます。
これは、Requestという名前がすでに使われているので、同じ名前は使用できませんという意味です。

解決方法

というわけで、解決方法ですが、Requestファサードの名前をPostRequestに変更して、

use Illuminate\Http\Request;
use Request as PostRequest;
public function index(Request $request)
    {
        $result = $request->post;
        
     //Requestファサードは、PostRequestに変更
        $name = PostRequest::input('name');

        return view('home', compact('result', 'name'));
    }

とすれば、うまく動きます。

9
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?