为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Laravel 中将数据从私有函数传递到公共函数?

如何在 Laravel 中将数据从私有函数传递到公共函数?

PHP
开满天机 2023-09-08 21:43:54
我有私人和公共职能。私有函数获取从表单发送的数据,公共函数执行结帐。    private function projectData(Request $request){                // dd($request->all());  //    $item = [];        // $datat = array_map(function($item){        //  return [        //      'name'=>$request->project_id,        //      'price'=>$request->budget,        //      'desc'=>'Deposit',        //      'qty'=>1        //  ];        // }, $item);        $data = [                'items'=>[                    'name'=>'Project No.'.$request->project_id                ],                'invoice_id' => uniqid(),                'invoice_description' => "Payment for Project No.".$request->project_id." Amount ".$request->budget,                'return_url' => route('payment.success'),                'cancel_url' => route('payment.cancel'),                'total' => $request->budget         ];          // dd($data);        return $data;    }        /**     * Responds with a welcome message with instructions     *     * @return \Illuminate\Http\Response     */    public function payment()    {        $data = $this->projectData();        $provider = new ExpressCheckout;        $response = $provider->setExpressCheckout($data);        dd($response);        // $response = $provider->setExpressCheckout($data, true);        return redirect($response['paypal_link']);    }我收到这个错误函数 App\Http\Controllers\PayPalController::projectData() 的参数太少,第 42 行 /var/www/CareerHouse/app/Http/Controllers/PayPalController.php 中传入的参数为 0,而预期为 1我不知道我做错了什么以及如何纠正?
查看完整描述

2 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

由于付款是公共方法并且它会重定向,因此很可能是通过路由调用的。在这种情况下,您可以在付款中注入请求实例,如下所示:


public function payment(Request $request)    {

        $data = $this->projectData($request);

        $provider = new ExpressCheckout;

        $response = $provider->setExpressCheckout($data);

        dd($response);

        // $response = $provider->setExpressCheckout($data, true);


        return redirect($response['paypal_link']);

    }


查看完整回答
反对 回复 2023-09-08
?
万千封印

TA贡献1891条经验 获得超3个赞

private function projectData(){

$request=request();

                // dd($request->all());

  //    $item = [];

        // $datat = array_map(function($item){

        //  return [

        //      'name'=>$request->project_id,

        //      'price'=>$request->budget,

        //      'desc'=>'Deposit',

        //      'qty'=>1

        //  ];

        // }, $item);

        $data = [

                'items'=>[

                    'name'=>'Project No.'.$request->project_id

                ],

                'invoice_id' => uniqid(),

                'invoice_description' => "Payment for Project No.".$request->project_id." Amount ".$request->budget,

                'return_url' => route('payment.success'),

                'cancel_url' => route('payment.cancel'),

                'total' => $request->budget 

        ];  

        // dd($data);


        return $data;

    }

        /**

     * Responds with a welcome message with instructions

     *

     * @return \Illuminate\Http\Response

     */

    public function payment()    {

        $data = $this->projectData();

        $provider = new ExpressCheckout;

        $response = $provider->setExpressCheckout($data);

        dd($response);

        // $response = $provider->setExpressCheckout($data, true);


        return redirect($response['paypal_link']);

    }

仅当您来自请求时,而不是从请求的函数调用另一个函数时,才可以使用依赖项注入,如果您要这样做,请尝试我的方法,或者将您的请求添加到处理此请求的主控制器并传递给其他方法。


查看完整回答
反对 回复 2023-09-08
  • 2 回答
  • 0 关注
  • 55 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信