在laravel中通过模态从多个表单获取输入
我对网络开发非常陌生,我正在为我的实习项目创建基本的CRUD。我的客户要求我制作一个创建表单,我需要将这些输入上传到数据库,假设我有3个表:商店、水果(一个商店有很多水果)和蔬菜(一个商店有很多蔬菜) 最后我制作了多个表单,其中一个主要表单用于商店输入,另一个表单用于水果和蔬菜输入(表单是分开的)。 提交并传递给控制器后,我只能从商店表单获取输入,而不能从其他表单获取输入 脚本和样式:在laravel中通过模态从多个表单获取输入,laravel,forms,bootstrap-modal,Laravel,Forms,Bootstrap Modal,我对网络开发非常陌生,我正在为我的实习项目创建基本的CRUD。我的客户要求我制作一个创建表单,我需要将这些输入上传到数据库,假设我有3个表:商店、水果(一个商店有很多水果)和蔬菜(一个商店有很多蔬菜) 最后我制作了多个表单,其中一个主要表单用于商店输入,另一个表单用于水果和蔬菜输入(表单是分开的)。 提交并传递给控制器后,我只能从商店表单获取输入,而不能从其他表单获取输入 脚本和样式: $(文档).ready(函数(){ //添加和删除水果表行 $(“.fruit add”)。单击(函数(){
$(文档).ready(函数(){
//添加和删除水果表行
$(“.fruit add”)。单击(函数(){
var fruit_pic=$(“#fruit_pic”).val();
var fruit_pic_name=$(“#fruit_pic”).val()。替换(/C:\\fakepath\\/i,)
var fruit_name=$(“#fruit_name”).val();
var markup=“”+水果图片名称+”+水果名称+“+”删除“+”;
$(“.fruit table”)。追加(标记);
});
$(“body”)。在(“click”、“.fruit remove”函数()上{
$(this.parents(“tr”).remove();
});
//添加和删除蔬菜表行
$(“.vegeture add”)。单击(函数(){
var PLAGENT_pic=$(“#PLAGENT_pic”).val();
var vegeture_pic_name=$(“#vegeture_pic”).val()。替换(/C:\\fakepath\\/i,)
var vegeture_name=$(“#vegeture_name”).val();
var markup=“”+蔬菜图片名称+”+蔬菜名称+“+”删除“+”;
$(“.vegetable”)。追加(标记);
});
$(“body”)。在(“单击“,.vegeture remove”,函数()上{
$(this.parents(“tr”).remove();
});
});
我的店铺表格:
{{csrf_field()}}
店名
@如果($errors->has('shop_name'))
{{$errors->first('shop_name')}
@恩迪夫
水果
图画
名称
行动
加水果
蔬菜
图画
名称
行动
加蔬菜
取消
拯救
我在弹出模式上的表格:
果
&时代;
图画
名称
取消
添加
蔬菜
&时代;
图画
名称
取消
添加
控制器功能:
公共函数添加()
{
返回视图(“添加车间”);
}
公共函数存储测试(请求$Request)
{
echo“test\n”;//有效
echo$request->fruit\u name;//不起作用
如果($request->hasfile('fruit\u pic'){//不起作用
foreach($request->file('fruit_pic')作为$image){
echo$request->fruit\u name;
}
}
echo$request->shop_name;//工作
}
当我尝试提交表单时,我会得到商店名称,但不会得到所有其他表单属性(水果和蔬菜)
我觉得我的方法不太正确,有什么不对,有没有更好的方法来应用它?只需快速查看一下您在行动中应该使用的表单
{{url(}}
{{route()}}
由于模型本身不在表单中,因此您无法获取店铺表单。请确保将其放入与提交原始表单标签相同的表单中。或者,如果您真的想将其置于外部,您可以在表单中进行隐藏输入,并使用模型中的java脚本将数据放入表单中,然后将表单提交给--plant modal--:
路线
我使用foreach是因为从您的文件上传来看,很明显您正在上传多个文件。您必须为这三个表单编写单独的存储函数和路由。您的初始表单仅使用/add shop/store作为shopForm错误原因。还要记住将enctype=“multipart/form data”添加到模式表单中
<!-- Fruit Modal -->
<div class="modal fade" id="addFruit" tabindex="-1" role="dialog" aria-labelledby="addFruit" aria-hidden="true">
<div class="modal-dialog" role="document">
<form id="form_fruit" method="post" action="{{ url('/add-fruits') }}">
{{ csrf_field() }}
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="addFruit">Fruit</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<div class="form-group">
<label for="fruit_pic">Picture</label>
<input type="file" accept="image/*" name="fruit_pic[]" id="fruit_pic" class="form-control">
</div>
<div class="form-group">
<label for="fruit_name">Name</label>
<input type="text" name="fruit_name" class="form-control" id="fruit_name">
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
<button type="submit" class="btn btn-primary fruit-add" data-dismiss="modal">Add</button>
</div>
</div>
</form>
</div>
</div>
public function addFruits(Request $request)
{
$this->validate($request, [
'fruit_name' => 'required|string',
'fruit_pic.*' => 'mimes:jpeg,jpg,gif,png,bmp|max:8300',
]);
$fruitname=$request->input('fruit_name');
if($request->hasfile('fruit_pic'))
{
foreach($request->file('fruit_pic') as $file)
{
$name=$file->getClientOriginalName();
$file->move(public_path().'/../../example.com/images', $name);
DB::table('tblfruits')->insert([
'fruit_name' => $fruitname,
'fruit_pic' => $name,
]);
}
}
}
Route::post('/add-fruits','Controller@addFruits');