Как передать данные из частной функции в функцию publi c в Laravel? - PullRequest
0 голосов
/ 01 августа 2020

У меня есть приватная и публичная c функция. Частная функция извлекает данные, отправленные из формы, и функция publi c выполняет проверку.

    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 (), 0 передано в / var / www/CareerHouse/app/Http/Controllers/PayPalController.php в строке 42 и ожидается ровно 1

Я не знаю, что я делаю не так, и как это исправить. ?

Ответы [ 2 ]

2 голосов
/ 01 августа 2020

Так как payment является методом publi c и перенаправляет, скорее всего, он вызывается маршрутом. В этом случае вы можете ввести экземпляр запроса в пределах платежа следующим образом:

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']);
    }
0 голосов
/ 01 августа 2020
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']);
    }

Вы можете использовать инъекцию зависимостей только тогда, когда вы исходите из запроса, а не при вызове другой функции из запрошенной функции, если вы должны сделать это, попробуйте, как это сделал я, или добавьте запрос ur в основной контроллер, который обрабатывает это и передает другому методу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...