无法在laravel 5.6控制器中创建Request对象

9 浏览
0 Comments

无法在laravel 5.6控制器中创建Request对象

控制器名称为MyController。\n

namespace App\Http\Controllers;
use Illuminate\Http\Request;
class MyController extends Controller
{
    public function index(){
        //
    }
    
    public function create(){
        //
    }
    
    public function store(Request $request){
        //
        $request->session()->put('key', '123');
        $data = $request->session()->get('key');
        print_r($data);
    }
    
    public function show($id){
        //
    }
    
    public function edit($id){
        //
    }
    
    public function update(Request $request, $id){
        //
    }
    
    public function destroy($id){
        //
    }
    
    public function contact(){
        return view('contact');
    }
    
    public function createSession(Request $request){
        //
        $request->session()->put('key', '123');
        $data = $request->session()->get('key');
        print_r($data);
    }
    
    public function viewSession_v1(Request $request){
        $data = $request->session()->get('key');
        print_r($data);
    }
    
    public function viewSession_v2(Request $request){
        $data = $request->session()->get('key');
        print_r($data);
    }
}

\n路由:\n

Route::get('createSession', 'MyController@createSession');
Route::get('viewSession-1', 'MyController@viewSession_v1');
Route::get('viewSession-2', 'MyController@viewSession_v2');

\n现在,当我调用`\"createSession\"`时,它将创建一个新的会话,当我调用`\"viewSession-1\"`或`\"viewSession-2\"`时,它将显示会话值,但我想从`viewSession_v2()`中删除`Request $request`,所以我做了以下代码:\n

public function viewSession_v2(){
    $request = new \Illuminate\Http\Request();
    $data = $request->session()->get('key');
    print_r($data);
}

\n现在,当我调用`\"viewSession-2\"`时,它将给我以下错误:\n[错误截图1](https://i.stack.imgur.com/WKS3k.png)\n[错误截图2](https://i.stack.imgur.com/NflGY.png)\n请问有人可以告诉我如何在方法/函数中创建请求对象,并解释为什么在这里给我一个错误?

0
0 Comments

在laravel 5.6控制器中无法创建请求对象的问题的出现的原因是因为没有正确使用会话请求中间件。解决方法是在路由组中使用web中间件来处理会话请求,或者在函数体内部使用request()辅助函数来创建请求对象。如果使用request()辅助函数,可以很快地访问请求的会话信息。另外,也可以使用session()辅助函数来实现相同的功能。具体用法可以参考laravel文档中的相关部分。

0
0 Comments

在Laravel 5.6控制器中无法创建请求对象的原因可能是因为没有正确引用相关类或命名空间。

解决方法是确保在控制器中正确引用了相关类或命名空间。

0