我正在使用Laravel 5.1,并希望有一个带有几行文本字段的表单及其相应的图像上传 .
形成:
<div id="row">
<input name="description[]" type="text">
<input name="image[]" type="file">
</div>
<div id="row">
<input name="description[]" type="text">
<input name="image[]" type="file">
</div>
控制器:
foreach($request->description as $key => $val){
if($val != null){
$data = new Finding;
$data->description = $val; //save description for each loop
$file = array('image' => Input::file('image'));
if (Input::file('image')->isValid()) {
$destinationPath = 'uploads';
$extension = Input::file('image')->getClientOriginalExtension();
$fileName = rand(1000,1000).'.'.$extension;
Input::file('image')->move($destinationPath, $fileName);
$path = Input::file('image')->getRealPath();
$data->image_location = $fileName[$key]; //save filename location to db
$data->save();
flash('success', 'Uploaded Successful');
return Redirect::to('/upload');
} else {
flash('error', 'Uploaded File Is Not Valid');
return Redirect::to('/upload');
}
}
我的问题是,如何使用 $key
值的干预来保存表中的新行以及相关的文本描述和图像上载,并仍然使用所有干预类?我的代码关闭了吗?
我可以通过一个表单输入和一个图像上传轻松完成所有这些操作,但我的目标是让一个页面包含多行输入 . 谢谢!
1 回答
我不确定你是如何管理多个领域的,无论它是一成不变的还是可以动态改变的 . 我之前使用javascript完成了动态方法,并跟踪隐藏文本字段作为计数所需的动态字段数 .
使用这种方法你的html可能看起来像这样:
所以这里我们每个都有两个图像和描述字段,计数器设置为2 .
如果我们提交表单并通过
dd()
签出请求,它看起来像这样:然后,这可以很好地为您的控制器中的for循环设置:
请注意,据我所知,您的代码中没有使用干预库,我只是编写了代码来执行上传 . 我希望这可以帮助你!
Edit
如果你真的想使用foreach循环并且你知道你将对每个图像都有描述,你可以这样做(但我个人认为有一个计数器是一个更好的方法)
您也可以检查描述/图像的计数,并将其用作循环的计数器:
但是,如果您可能有不同的布局,即您没有1个图像的1个描述,请澄清,因为您需要采取不同的方法 .