Laravel 5.2表单无报错却无法提交问题求助
解决Laravel 5.2表单无法提交的问题
嘿,我帮你找到了几个关键问题,这就是你的表单提交失败且无报错的核心原因:
1. 嵌套表单导致提交行为完全异常
你同时写了原生HTML的<form class="form-horizontal">和Laravel Collective的{!! Form::open(...) !!},而HTML规范绝对不允许表单嵌套。浏览器会自动忽略其中一个表单标签,实际提交的是外层的原生表单——它默认使用GET方法,所以你才会看到所有参数都挂在URL后面,根本没触发你定义的POST路由到TicketsController@store。
2. Form::open的参数语法错误
你把表单的class属性单独放到了第二个数组里,还写错了语法:['class=>form-horizontal form bordered']里的键名class没加引号,箭头=>的写法也不符合PHP数组规范。正确的做法是把所有表单选项(包括class)都放在第一个参数数组里。
3. 控制器方法的多余大括号
你的store方法里多了一层不必要的大括号,这会导致语法错误,虽然因为表单没提交到这里所以没触发,但还是要修正。
4. 小问题:单行输入框误用多行属性
你给Form::text('body')设置了rows和cols,但单行文本输入框不支持这些属性,应该换成Form::textarea来实现多行输入。
修正后的表单代码
{!! Form::open(['method'=>'POST','action'=>'TicketsController@store','files'=>true, 'class'=>'form-horizontal form bordered']) !!} <div class="form-group"> {!! Form::label('problem_title','title',['class'=>'control-label col-lg-2']) !!} <div class="col-lg-10">{!! Form::text('problem_title',null,['class'=>'form-control']) !!}</div> </div> <div class="form-group "> {!! Form::label('category_id','Category:',['class'=>'control-label col-lg-2']) !!} <div class="col-lg-10">{!! Form::select('category_id',$categories,'3',['class'=>'form-control']) !!}</div> </div> <div class="form-group "> {!! Form::label('status_id','Status:',['class'=>'control-label col-lg-2']) !!} <div class="col-lg-10">{!! Form::select('status_id',$statuses,'3',['class'=>'form-control']) !!}</div> </div> <div class="form-group"> {!! Form::label('body','How can We help you?',['class'=>'control-label col-lg-2']) !!} <div class="col-lg-10">{!! Form::textarea('body',null,['class'=>'form-control','rows'=>5 ,'cols'=>5]) !!}</div> </div> <div class="form-group"> {!! Form::label('photo_id','ScreenShot:',['class'=>'control-label col-lg-2']) !!} <div class="col-lg-10">{!! Form::file('photo_id', ['class'=>'form-control']) !!}</div> </div> <div class="text-right"> {!! Form::submit('Create Ticket',['class'=>'btn btn-primary ']) !!} </div> {!! Form::close() !!}
修正后的控制器代码
public function create() { $categories = Category::lists('name','id')->all(); $statuses = Status::lists('name','id')->all(); // 注意:你之前compact了$users但没定义它,这里我去掉了,如果你需要用户数据请补充获取逻辑 return view('tickets.create', compact('categories','statuses')); } public function store(Request $request) { $user = Auth::user(); $input = $request->all(); if($file = $request->file('photo_id')){ $name = time() . $file->getClientOriginalName(); $file->move('images',$name); // 修正了move方法的空格问题 $photo = Photo::create(['file'=>$name]); $input['photo_id'] = $photo->id; } $user->ticket()->create($input); return redirect('tickets'); }
修正后再测试提交,应该就能正常触发POST请求并执行store方法的逻辑了。
内容的提问来源于stack exchange,提问作者Olasunkanmi
相关产品推荐
相关产品推荐

