如何将请求实例从一个控制器函数传递到另一个控制器函数

How to pass instance of Request from a controller function to another controller function

我必须从一个控制器调用另一个控制器的函数。

public function getquickviews(Request $request){
     $report = new ReportController();
     $report ->Applications($request->except('cl_e_start_date'));//it's not working its giving me error that it expect and instance of Request and passed array()
}



    public function Applications(Request $request) 
    {
/*APP USAGE*/
     }

而且我必须将请求实例传递给应用程序函数。但问题是我不想从 getquickviews 请求传递所有参数,就像我在 getquickviews 函数上收到电子邮件,phone,名称,但我只需要将 phone,电子邮件传递给应用程序函数.

更改此行

$report ->Applications($request->except('cl_e_start_date'));

$report ->Applications($request);

尝试如下(不确定它是否有效):

public function getquickviews(Request $request){
    $returnedRequest = $request; // do whatever with your request here
    return redirect()->route('SecondController.Applications', compact('returnedRequest'));
}



public function Applications(Request $request){
    /*APP USAGE*/
}

我认为这会奏效:

$report ->Applications($request->toArray());

您可以保留所需的特定键和值,并在将其传递给函数之前从 $request 中删除其余部分。首先将 $request 转换为数组 by

$request->toArray()

然后通过

删除不需要的键
unset($request['key-here']);

然后传给函数

$report ->Applications($request);

将请求发送到下一个方法或任何下一级调用的两种方法。

首先,您可以将 Request class depenednacy 注入到该方法中,例如:

public function store(Request $request)
{
    // Form Submits here
}

如果你想将 $request 传递给其他方法,例如在插入后显示数据,你可以这样做:

public function showStore(Request $request)
{
    dd($request->get());
}

然后你可以在store方法中调用这个方法

$this->showStore($request);

或者其次是您可以使用请求作为进入 showStore 或任何 n 级调用的方法。像这样:

public function showStore()
{
    dd(request()->all());
}

$this->showStore(); // You do not require any injection.

祝你好运!!!

您需要创建一个新的 Request 实例。

public function getquickviews(Request $request){
 $report = new ReportController();
 $content = new Request();
 $content->something = $request->something;
 $content->somethingElse = $request->somethingElse;
 $report ->Applications($content);
 }

然后您必须在以下时间收到它:

public function Applications(Request $request) 
{
/*APP USAGE*/
 }

就是这样。 问候。

为了能够创建自定义请求并因此使用它来引用控制器中的 post 方法,您需要首先启动一个 Request 实例,正如@martin Carrasco 如上所述:

下面的代码是 martin Carrasco 的延续

public function getquickviews(Request $request){
$report = new ReportController();
$content = new Request
([
     'firstParam' => $request->param1,
     'secondParam' => $request ->param2,
]);

 $report ->Applications($content);

}

尝试一下,希望它有效。