【问题标题】:Sending request to a post controller function from another controller function从另一个控制器功能向后控制器功能发送请求
【发布时间】:2019-01-09 01:11:33
【问题描述】:

我有一个这样的控制器。

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

定义为post in route没有任何问题。

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

我想通过从控制器发送请求来使用barcode_approve

public function push_approve(){

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

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

} 

但是 $reqeust->input 当我通过控制器函数(push_approve)发送它时没有给出值

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

【问题讨论】:

    标签: laravel laravel-5.6


    【解决方案1】:

    barcode_approve() 方法中的必需参数必须是instance of Request,而不仅仅是数组,即使你称它为$request。 所以如果你真的需要你的代码工作,你必须在你的 push_approve 方法()中创建 Request 实例

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

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

    【讨论】:

      【解决方案2】:

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

      当你发现自己试图从另一个控制器方法调用一个控制器方法时,这通常意味着你有可以提取的逻辑,无论是模型、特征,还是在同一个控制器的情况下,一个单独的受保护函数.

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2016-09-13
          • 2011-08-30
          • 1970-01-01
          • 1970-01-01
          • 2021-09-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多