Symfony 4 создать пост-запрос в процессе - PullRequest
0 голосов
/ 11 января 2019

Я хочу создать функцию, которая будет выполнять другой URL-адрес (этот URL-адрес генерирует файл на сервере) и получать ответ, а затем отправлять сообщение пользователю, но я не хочу использовать ajax, я пытаюсь использовать объект Reqeust, но это не так работа.

public function testCreateFile() {

    $uri = 'http://someuri/somefuncition';
    $method = 'POST';
    $paramaters = array(
        'csv' => '20190102212655-product-test.csv',
        'type' => '5', 

    );
   $request = new Request();
   $request->create($uri,$method,$paramaters);


    return new Response("Message to user") ;
}

Как мне следует поступить?

Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 11 января 2019

Что вам нужно, это curl . Лучший способ - использовать приведенный ниже код в качестве Сервиса, поэтому я дам полный класс

Класс обслуживания

<?php
    App\Services;

    class PostRequest
    {
        static function get_data(String $url, Array $post_parameters)
        {
            //url-ify the data for the POST
            $parameters_string = "";

            foreach($post_parameters as $key=>$value) {
                 $parameters .= $key.'='.$value.'&'; 
            }

            rtrim($fields_string, '&');

            //open connection
            $ch = curl_init();

            //set the url, number of POST vars, POST data
            curl_setopt($ch,CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch,CURLOPT_POST, count($post_parameters));
            curl_setopt($ch,CURLOPT_POSTFIELDS, $parameters);

            //execute post
            $result = curl_exec($ch);

            curl_close($ch);

            return $result;
        }
    }
?>

Так что после включения use App\Services\PostRequest; в ваш контроллер вы можете сделать это

public function testCreateFile() {
    $uri = 'http://someuri/somefuncition';
    $paramaters = [
        'csv' => '20190102212655-product-test.csv',
        'type' => '5',
    ];
    $request = PostRequest::get_data($uri, $paramaters);
    return new Response("Message to user") ;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...