简体   繁体   中英

how to pass a value from repository to the controller in laravel

SmartpaySPaymentRepository.php

i am new to laravel. i want to passe this value ($url->nodeValue) which is in the SmartpaySPaymentRepository.php sendPaymentToSmartpaySForPaymentToken function to SmartPaySController.php getQuotePayment($quoteId) function can someone help me to do this?

public function sendPaymentToSmartpaySForPaymentToken($xml, $authToken, $transactionId, $doPrepareUrl)
        {
            $fields = array(
                'authToken' => $authToken,
                '&requestXML' => $xml,
            );

            $fields_string = $xml;
            foreach ($fields as $key => $value) {
                $fields_string .= $key . '=' . $value . '&';

            }
            rtrim($fields_string, '&');

            //open connection
            $ch = curl_init($doPrepareUrl);


            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POST, 2);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
            $response_from_smartpays = curl_exec($ch);

            curl_close($ch);


                $testString = $response_from_smartpays;//xml string
                $dom = new \DOMDocument();
                $dom->formatOutput = TRUE;
                $dom->preserveWhiteSpace = FALSE;
                $dom->loadXml($testString);

                $result = ($dom->getElementsByTagName('redirectURL'));
                foreach ($result as $url){

                 return ($url->nodeValue);//want to passe this value to controller


                }
        }

SmartPaySController.php

public function getQuotePayment($quoteId)
    {
        $quote = $this->quoteRepo->getQuoteById($quoteId);
        if($quote) {
            $totalPrice = $quote->total_price;
            if ($quote->amended_policy) {
                $totalPrice = $quote->amend_price;

            }
                dd($url->nodeValue);//want to use $url->nodeValue here

            $currency = CURRENCY_TYPE;
            return $this->processSmartpaySPayment(PAYMENT_TYPE_QUOTE, $totalPrice, $currency, $quote->customer_id, $quoteId);
        }else {
            abort(404);
        }

    }

You can return them as an array in repository

$resultReturn = []

foreach ($result as $url){
    $resultReturn[] =  ($url->nodeValue);//want to passe this value to controller
}

return $resultReturn; // pass the array contiling all rsults in the loop

In the controller

$currency = CURRENCY_TYPE;
$results =  $this->processSmartpaySPayment(PAYMENT_TYPE_QUOTE, $totalPrice, $currency, $quote->customer_id, $quoteId);

dd($results); //array of $url->nodeValue here

return $results;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM