#php #wordpress #laravel #woocommerce
#php #wordpress #laravel #woocommerce
Вопрос:
Я использую Laravel 8 с API woocommerce. Я создаю категорию продуктов, используя документацию Woocommerce api.
https://woocommerce.github.io/woocommerce-rest-api-docs/#create-a-product-category
и я отправляю запрос на загрузку изображений следующим образом,
$categoryPhotoUrl = null;
if (request()->hasFile('images')) {
$file = $request->file('images') ;
$fileName = $file->getClientOriginalName() ;
$destinationPath = public_path().'/assets/images/categories' ;
$file->move($destinationPath,$fileName);
$categoryPhotoUrl = asset('/assets/images/categories').'/'.$fileName;
}
$request->request->add(['image' => ['src' => $categoryPhotoUrl]]);
CategoryService::created($request->except('_token', 'images'));
и в классе обслуживания я использую логику,
public static function created($data)
{
return (new WoocommerceClient())->postRecord('products/categories',$data);
}
и WoocommerceClient содержат эту логику,
$response = Http::withToken($this->authToken)->withHeaders([
"Content-Type" => "image/jpg"
])->post($this->baseUrl.$endpoint, $data);
dd($response);
Если я отправляю данные без изображения, они работают нормально, но если я сохраняю изображение, а затем отправляю URL, я получил ошибку Bad Request 400.
IlluminateHttpClientResponse {#279 ▼
#response: GuzzleHttpPsr7Response {#314 ▼
-reasonPhrase: "Bad Request"
-statusCode: 400
-headers: array:20 [▶]
-headerNames: array:20 [▶]
-protocol: "1.1"
-stream: GuzzleHttpPsr7Stream {#313 ▶}
}
Как я могу это решить. Спасибо.
Ответ №1:
С большим количеством поиска я смогу это исправить. Я использую выборку для загрузки изображения в базу данных WordPress. Затем я получаю объект, содержащий исходный URL, затем отправляю его с помощью woocommerce