【发布时间】:2019-10-25 01:11:28
【问题描述】:
我在使用图像更新记录时遇到问题。我不需要做什么。我的图像存储在一个名为“img/products”的公共文件夹中
ProductController.php
这是我的控制器。不用修改图片也能正常工作。
public function update(Request $request, $id)
{
$validator = Validator::make($request->input(), array(
'name' => 'required',
'category_id' => 'required',
'description' => 'required',
'price_neto' => 'required',
'iva' => 'required',
'price_total' => 'required',
'image' => '',
));
if ($validator->fails()) {
return response()->json([
'error' => true,
'messages' => $validator->errors(),
], 422);
}
$products = Product::find($id);
$products->name = $request->input('name');
$products->category_id = $request->input('category_id');
$products->description = $request->input('description');
$products->price_neto = $request->input('price_neto');
$products->iva = $request->input('iva');
$products->price_total = $request->input('price_total');
$products->image = $request->input('image');
$products->save();
return response()->json([
'error' => false,
'products' => $products,
], 200);
}
Product.js
我只知道我必须在 store 函数中使用var formData = new FormData ($ ("# frmAddProduct") [0]);。我可以输入带有图像的记录,但不能编辑它们。我的图像存储在名为“img/products”的公共文件夹中
$(document).ready(function() {
$("#btn-edit").click(function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
type: 'PUT',
url: '/product/' + $("#frmEditProduct input[name=product_id]").val(),
data: {
name: $("#frmEditProduct input[name=name]").val(),
category_id: $("#frmEditProduct select[name=category_id]").val(),
description: $("#frmEditProduct input[name=description]").val(),
price_neto: $("#frmEditProduct input[name=price_neto2]").val(),
iva: $("#frmEditProduct input[name=iva2]").val(),
price_total: $("#frmEditProduct input[name=price_total2]").val(),
image: $("#frmEditProduct input[name=image]").val(),
},
dataType: 'json',
success: function(data) {
$('#frmEditProduct').trigger("reset");
$("#frmEditProduct .close").click();
window.location.reload();
},
error: function(data) {
var errors = $.parseJSON(data.responseText);
$('#edit-product-errors').html('');
$.each(errors.messages, function(key, value) {
$('#edit-product-errors').append('<li>' + value + '</li>');
});
$("#edit-error-bag").show();
}
});
});
});
function editProductForm(product_id) {
$.ajax({
type: 'GET',
url: '/product/' + product_id,
success: function(data) {
$("#edit-error-bag").hide();
$("#frmEditProduct input[name=name]").val(data.products.name);
$("#frmEditProduct select[name=category_id]").val(data.products.category_id);
$("#frmEditProduct input[name=description]").val(data.products.description);
$("#frmEditProduct input[name=price_neto2]").val(data.products.price_neto);
$("#frmEditProduct input[name=iva2]").val(data.products.iva);
$("#frmEditProduct input[name=price_total2]").val(data.products.price_total);
$("#frmEditProduct file[name=image]").val(data.products.image);
$("#frmEditProduct input[name=product_id]").val(data.products.id);
$('#editProductModal').modal('show');
},
error: function(data) {
console.log(data);
}
});
}
【问题讨论】:
-
您是否创建了指向存储路径的链接? php工匠存储:链接
-
不,我没有。我没有使用过该命令,并且我已经可以使用存储和删除功能。 @AlexandreBarbosa
-
好的,虽然我以更新方法为例进行了回复,但我不确定我是否理解您的情况。因为我想知道您将图像存储在哪里以获取它们。如果要存储在“storage”文件夹中,则必须创建指向存储的链接。但是,如果您将图像作为其他“资产”存储在公用文件夹中,则解决方案会有所不同。
-
图片存储在公共文件夹('image/products/')@AlexandreBarbosa
-
请看我答案的结尾,看看它是否可以根据您的需要帮助您。我编辑了我的答案。
标签: javascript php html ajax laravel