#laravel #post #laravel-5 #guzzle
#laravel #Публикация #laravel-5 #заполнение
Вопрос:
У меня есть два разных запроса Guzzle post, которые я пытаюсь объединить (исключительно потому, что они в основном выполняют объединенную работу и должны выполняться вместе).
Изначально у меня есть данные о моих пожертвованиях:
'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 post.
Ответ №1:
Вы можете попробовать это:
$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,
]);
Комментарии:
1. Я провел ваш тест, но появилась синтаксическая ошибка, связанная с заключительной скобкой для multipart [] и запятой после нее (и прямо перед конечной фигурной скобкой), в которой говорится, что запятая была неожиданной. Я попытался просто удалить его, но затем возникла проблема с фигурной скобкой в конце. Для пояснения я также исправил апостроф после $doc-> type_id.
2. «Я провел ваш тест, но появилась синтаксическая ошибка, указывающая на скобку в конце» — я скопировал ваш код, хотя ваш тоже может не работать 🙂 В любом случае, я внес правку