我有一个像这样的控制器。
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中的输入?
答案 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()