Laravel 5.2 - 无法更新多个图像,未定义的偏移量:0
Laravel 5.2 - Can't Update Multiple Images, Undefined offset: 0
我正在尝试用多个图像表单更新 table 字段。创建表单工作正常,但问题是当我尝试更新它时。
所以这里更新函数的控制器:
public function update(Request $request, $id)
{
$update = new Product($request->all());
$product=Product::find($id);
$picture = '';
$images = [];
if ($request->hasFile('images')) {
$files = $request->file('images');
foreach($files as $file){
$filename = $file->getClientOriginalName();
$extension = $file->getClientOriginalExtension();
$picture = date('His').$filename;
$destinationPath = base_path() . '\public\images/';
$file->move($destinationPath, $picture);
$images[]=$picture;
}
}
if (!empty($product['images'])) {
$product['images'] = $images[0];
$product['images2'] = $images[1];
$product['images3'] = $images[2];
$product['images4'] = $images[3];
} else {
unset($product['images']);
}
$product->update($update);
return redirect('product');
}
如果不够清楚,可以在codeshare.io
上查看完整的ProductController
更新形式为codeshare.io
如您所见,我正在使用数组将图像插入数据库并且数组已在 $product['images4'] = $images[3];
上定义
这是放图片的地方。
但它给了我错误:
ErrorException in ProductController.php line 149: Undefined offset: 0
你能推荐一个更好的代码或者解释一下这个错误吗?非常感谢 ;)
祝你有个愉快的一天。
在 foreach 关闭后使用 print_r($image); exit;
并用 kay 和 value 检查数组并排列它
当您尝试访问未上传的图像的索引时,会出现未定义的偏移量。
To fix this problem, you should modify your code like this -
public function update(Request $request, $id)
{
$update = $request->all();
$product = Product::find($id);
$picture = '';
$images = [];
if ($request->hasFile('images')) {
$files = $request->file('images');
foreach($files as $file){
if (isset($file)){
$filename = $file->getClientOriginalName();
$extension = $file->getClientOriginalExtension();
$picture = date('His').$filename;
$destinationPath = base_path() . '\public\images/';
$file->move($destinationPath, $picture);
array_push($images, $picture);
}
}
}
if (!empty($product['images']) && isset($images[0])) {
$update['images'] = $images[0];
}
if (!empty($product['images2']) && isset($images[1])) {
$update['images2'] = $images[1];
}
if (!empty($product['images3']) && isset($images[2])) {
$update['images3'] = $images[2];
}
if (!empty($product['images4']) && isset($images[3])) {
$update['images4'] = $images[3];
}
unset($update['images']);
$product->update($update);
return redirect('product');
}
我正在尝试用多个图像表单更新 table 字段。创建表单工作正常,但问题是当我尝试更新它时。
所以这里更新函数的控制器:
public function update(Request $request, $id)
{
$update = new Product($request->all());
$product=Product::find($id);
$picture = '';
$images = [];
if ($request->hasFile('images')) {
$files = $request->file('images');
foreach($files as $file){
$filename = $file->getClientOriginalName();
$extension = $file->getClientOriginalExtension();
$picture = date('His').$filename;
$destinationPath = base_path() . '\public\images/';
$file->move($destinationPath, $picture);
$images[]=$picture;
}
}
if (!empty($product['images'])) {
$product['images'] = $images[0];
$product['images2'] = $images[1];
$product['images3'] = $images[2];
$product['images4'] = $images[3];
} else {
unset($product['images']);
}
$product->update($update);
return redirect('product');
}
如果不够清楚,可以在codeshare.io
上查看完整的ProductController更新形式为codeshare.io
如您所见,我正在使用数组将图像插入数据库并且数组已在 $product['images4'] = $images[3];
这是放图片的地方。
但它给了我错误:
ErrorException in ProductController.php line 149: Undefined offset: 0
你能推荐一个更好的代码或者解释一下这个错误吗?非常感谢 ;) 祝你有个愉快的一天。
在 foreach 关闭后使用 print_r($image); exit;
并用 kay 和 value 检查数组并排列它
当您尝试访问未上传的图像的索引时,会出现未定义的偏移量。
To fix this problem, you should modify your code like this -
public function update(Request $request, $id)
{
$update = $request->all();
$product = Product::find($id);
$picture = '';
$images = [];
if ($request->hasFile('images')) {
$files = $request->file('images');
foreach($files as $file){
if (isset($file)){
$filename = $file->getClientOriginalName();
$extension = $file->getClientOriginalExtension();
$picture = date('His').$filename;
$destinationPath = base_path() . '\public\images/';
$file->move($destinationPath, $picture);
array_push($images, $picture);
}
}
}
if (!empty($product['images']) && isset($images[0])) {
$update['images'] = $images[0];
}
if (!empty($product['images2']) && isset($images[1])) {
$update['images2'] = $images[1];
}
if (!empty($product['images3']) && isset($images[2])) {
$update['images3'] = $images[2];
}
if (!empty($product['images4']) && isset($images[3])) {
$update['images4'] = $images[3];
}
unset($update['images']);
$product->update($update);
return redirect('product');
}