Правильное форматирование JSON и многочастного почтового запроса Guzzle - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть два разных запроса к сообщению Guzzle, которые я пытаюсь объединить (исключительно потому, что они в основном выполняют объединенную работу и должны выполняться вместе).

Изначально у меня есть данные о пожертвовании:

'donation' => [
       'web_id' => $donation->web_id,
       'amount' => $donation->amount,
       'type' => $donation->type,
       'date' => $donation->date->format('Y-m-d'),
       'collection_id' => NULL,
       'status_id' => $donation->status_id,
 ],

И затем у меня есть мои файлы, которые идут вместе с ним, которые в основном представляют собой два разных PDF-файла, которые включены или отключены для доноров, иногда они имеют оба.Я знаю, что составная часть будет выглядеть примерно так, как показано ниже, но я не уверен.

                foreach ($uploadDocs as $doc) {
                        'multipart' => [
                            [
                                'name'     => 'donation_id',
                                'contents' => $donation->web_id,
                            ],
                            [
                                'name'     => 'type_id',
                                'contents' => $doc->type_id',
                            ],
                            [
                                'name'     => 'file',
                                'contents' => fopen($doc->path, 'r'),
                                'headers'  => ['Content-Type' => 'application/pdf'],
                            ],
                        ],
                }

Поскольку я обычно обрабатывал только один файл за раз, и я не уверен, как объединить первый блок кода со вторым для соответствующего запроса на публикацию в Guzzle.

1 Ответ

0 голосов
/ 24 апреля 2019

Вы можете попробовать это:

$donationData = [
    'web_id' => $donation->web_id,
    'amount' => $donation->amount,
    'type' => $donation->type,
    'date' => $donation->date->format('Y-m-d'),
    'collection_id' => NULL,
    'status_id' => $donation->status_id,
];

$multipart = [];

foreach ($uploadDocs as $doc) {
    $multipart[] = [
        [
            'name'     => 'donation_id',
            'contents' => $donation->web_id,
        ],
        [
            'name'     => 'type_id',
            'contents' => $doc->type_id,
        ],
        [
            'name'     => 'file',
            'contents' => fopen($doc->path, 'r'),
            'headers'  => ['Content-Type' => 'application/pdf'],
        ],
    ];
}

Чем выполнить ваш запрос:

$r = $client->request('POST', 'http://example.com', [
    'body' => $donationData,
    'multipart' => $multipart,
]);
...