从另一个控制器功能向后控制器功能发送请求

时间:2018-08-01 12:47:20

标签: laravel laravel-5.6

我有一个像这样的控制器。

public function barcode_approve(Request $request)
{
    $barcodes = $request->input('barcode_values');
    $upload_ids = $request->input('upload_id');
    ....
}

它被定义为路线中的任何问题。

Route::post('my/url','BarcodeScanController@barcode_approve');

我想通过发送类似控制器的请求来使用条形码批准

public function push_approve(){

    $request = ['barcode_values' => '23ssdwe','upload_id'=>234234];

    $this->barcode_approve($request);
    .....

} 

但是 $ reqeust-> input 通过控制器函数(push_approve)发送时不会给出值

如何从另一个控制器功能发送值作为$ request中的输入?

3 个答案:

答案 0 :(得分:1)

您的条形码批准需要一个Request对象,而不是一个数组。虽然您可以实例化一个新的Request对象并可能注入您的假输入,但我认为这是一种不良做法。

每当您发现尝试从另一个控制器方法调用一个控制器方法时,通常意味着您具有可以提取到模型,特征或在相同控制器的情况下单独的受保护函数的逻辑。

控制器的目的是成为一种传输方法,您不应在其中包含太多的业务逻辑,请尽可能地将逻辑提取到模型中。

答案 1 :(得分:0)

extends您的控制器以及您要使用的控制器 然后调用函数this->barcode_approve($request)

答案 2 :(得分:0)

条形码_approve()方法中的必需参数必须为instance of Request,而不仅仅是u,即使您将其称为$request。 因此,如果您确实需要使用代码,则必须在push_approve method()中创建Request实例

$request = new Request(['barcode_values' => '23ssdwe','upload_id'=>234234]);

但是更好的方法是将请求最初路由到push_approve()