как передать значение из хранилища в контроллер в laravel - PullRequest
0 голосов
/ 02 марта 2020

SmartpaySPaymentRepository. php

Я новичок в laravel. я хочу передать это значение ($ url-> nodeValue), которое находится в SmartpaySPaymentRepository. php sendPaymentToSmartpaySForPaymentToken функция в SmartPaySController. php Функция getQuotePayment ($ quoteId) может кто-нибудь помочь мне сделать это?

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);
        }

    }

1 Ответ

1 голос
/ 02 марта 2020

Вы можете вернуть их как массив в хранилище

$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

В контроллере

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

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

return $results;

...