在laravel中通过模态从多个表单获取输入

在laravel中通过模态从多个表单获取输入,laravel,forms,bootstrap-modal,Laravel,Forms,Bootstrap Modal,我对网络开发非常陌生,我正在为我的实习项目创建基本的CRUD。我的客户要求我制作一个创建表单,我需要将这些输入上传到数据库,假设我有3个表:商店、水果(一个商店有很多水果)和蔬菜(一个商店有很多蔬菜) 最后我制作了多个表单,其中一个主要表单用于商店输入,另一个表单用于水果和蔬菜输入(表单是分开的)。 提交并传递给控制器后,我只能从商店表单获取输入,而不能从其他表单获取输入 脚本和样式: $(文档).ready(函数(){ //添加和删除水果表行 $(“.fruit add”)。单击(函数(){

我对网络开发非常陌生,我正在为我的实习项目创建基本的CRUD。我的客户要求我制作一个创建表单,我需要将这些输入上传到数据库,假设我有3个表:商店、水果(一个商店有很多水果)和蔬菜(一个商店有很多蔬菜)

最后我制作了多个表单,其中一个主要表单用于商店输入,另一个表单用于水果和蔬菜输入(表单是分开的)。 提交并传递给控制器后,我只能从商店表单获取输入,而不能从其他表单获取输入

脚本和样式:


$(文档).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">&times;</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');