Необходимо вызвать функцию после отправки формы с помощью laravel - PullRequest
0 голосов
/ 22 мая 2018

Необходимо вызвать функцию после отправки формы.В моем контроллере содержатся два вызова API. Мне нужно вызвать первый API и получить из него значение «sld», а затем передать значение «sld» во второй URL-адрес API, после чего выполнить Второй API.Но я получил два выхода API одновременно.Пожалуйста, предложите любое решение для вызова первого API после того, как отобразятся вторые данные API.

Мой код контроллера

    public function domaincheck(Request $request)
       {
    ini_set('max_execution_time', 300);
    //set_time_limit(300);
        $sld = $request['sld'];
        $tld = $request['tld'];
        $response = file_get_contents('https://reseller.enom.com/interface.asp?command=check&sld='. $sld .'&tld='. $tld .'&uid=resellid&pw=resellpw&responsetype=xml');  
        $data = simplexml_load_string($response);
        $configdata   = json_encode($data);
        $final_data = json_decode($configdata,true);// Use true to get data in array rather than object
        // dd($final_data);



        $response1 = file_get_contents('http://reseller.enom.com/interface.asp?command=GETNAMESUGGESTIONS&uid=resellid&pw=resellpw&SearchTerm='. $sld .'&MaxResults=50&ResponseType=XML');       
        $data1 = simplexml_load_string($response1);
        $configdata1   = json_encode($data1);
        $final_data1 = json_decode($configdata1,true);// Use true to get data in array rather than object
        //dd($final_data1);

        }

Мой код просмотра

 <form class="form-horizontal" method="get"> 


  <div class="form-group">
     <div class=" col-lg-2"></div>
     <div class="col-lg-8">
         <div class="input-group m-b">
            <span class="input-group-addon" style="padding-left:10px; background-color: #999;" class='unclickable'>www</span>
            <input type="text" name="sld" class="form-control">
  <span class="input-group-addon">

  <select class="form-control" name="tld" style="width: 100px;">

  <?php $j = 0; ?>
  @foreach($final_data2['tldlist']['tld'] as $value)
  <?php $j++; ?> 
  @endforeach

  @for ($i = 0; $i < $j-1;)
  <option value="{{($final_data2['tldlist']['tld'][$i]['tld'])}}">{{($final_data2['tldlist']['tld'][$i]['tld'])}}</option>

  <?php $i++; ?> 
  @endfor


      </select>  
      </span>
      <span class="input-group-addon">
      <button type="submit" class="btn btn-sm btn-success" >Submit</button>  
      </span>
      </div>
      <p class="text-center text-dark customFont" >
                    @foreach($final_data as $key=>$value)
                      @if($key=='DomainName')
                        <b>{{$value}}</b> <b>-</b>
                      @endif 
                      @if($key=='RRPText')
                          <b>{{$value}}</b>
                      @endif
                    @endforeach
                </p>



  @foreach($final_data1['DomainSuggestions']['Domain'] as $value)

  {{$value}}<br>

  @endforeach

Пожалуйста, предложите любыерешение этой проблемы

1 Ответ

0 голосов
/ 22 мая 2018

Вы должны хранить эти два вызова API как функции в отдельной папке в каталоге app .Например, в каталоге \ app \ Repositories вы можете создать два отдельных файла php и сохранить вызовы API как функцию.При этом, пожалуйста, используйте подход на основе класса.Смотрите следующий пример, внутри DomainSuggestion.php

    <?php

        namespace App\Repositories;


        class DomainSuggestion
        {
            function getdomain(&$domainArray)
            {
               $response = file_get_contents('https://reseller.enom.com/interface.asp?command=check&sld='. $domainArray[0] .'&tld='. $domainArray[1] .'&uid=resellid&pw=resellpw&responsetype=xml');
    $data = simplexml_load_string($response);
            $configdata   = json_encode($data);
            $final_data = json_decode($configdata,true);
return $final_data;
}
}

и в функции вашего контроллера

use App\Repositories\DomainSuggestion;

     $sld = $request['sld'];
        $tld = $request['tld'];
        $domainArray = array($sld, $tld);

        $dataObject = new DomainSuggestion();
        $result = $dataObject->getdomain($domainArray);

Инициализируйте объект этого класса и вызовите функцию (внутри вашегоконтроллер).Возвращенное значение из первой функции может быть использовано во втором вызове.Вы также можете передать требуемый параметр в функцию.Не забудьте включить каталог функций в свой контроллер (используйте App \ Repositories \ ClassName;)

...