如何解决多步骤表单PHP Laravel
我尝试创建多步骤表单,但是每当我尝试选择添加产品图片https://i.stack.imgur.com/r37Ph.png时,它都会返回错误https://i.stack.imgur.com/dLf9f.png。 下面,我将显示我的create-step1.blade.PHP以及控制器的代码。如果需要其他任何方法来显示导致错误的原因,请告诉我。
create-step1.blade.PHP
<h1 class="text-center">Step 1- Add New Recipe</h1>
<hr>
<form action="/recipes/create-step1" method="post">
{{ csrf_field() }}
<div class="container">
<div class="row">
<div class="col-8 offset-2">
<div class="row">
<h1>Add New Recipe</h1>
</div>
<div class="form-group row">
<label for="title" class="col-md-4 col-form-label">Recipe Title</label>
<input id="title"
type="text"
class="form-control{{ $errors->has('title') ? ' is-invalid' : '' }}"
name="title"
value="{{ old('title') }}"
autocomplete="title" autofocus>
@if ($errors->has('title'))
<span class="invalid-Feedback" role="alert">
<strong>{{ $errors->first('title') }}</strong>
</span>
@endif
</div>
<hr>
<section class="Description">
<div class="form-group row">
<label for="description" class="col-md-4 col-form-label">Recipe Description</label>
<textarea class="form-control {{ $errors->has('description') ? ' is-invalid' : '' }}"
name="body"
id="description"
rows="5"
placeholder="Your Post Here"
value="{{ old('description') }}"
autocomplete="description" autofocus>
</textarea>
@if ($errors->has('description'))
<span class="invalid-Feedback" role="alert">
<strong>{{ $errors->first('description') }}</strong>
</span>
@endif
</div>
</section>
<hr>
<button type="submit" class="btn btn-primary">Add Product Image</button>
</div>
</div>
</div>
</form>
@endsection
RecipesController.PHP
class RecipesController extends Controller
{
/**
* Show the step 1 Form for creating a new product.
*
* @param Request $request
* @return Application|Factory|View
*/
public function createStep1(Request $request)
{
$recipe = $request->session()->get('recipe');
return view('recipes.create-step1',compact('recipe',$recipe));
}
/**
* Post Request to store step1 info in session
*
* @param \Illuminate\Http\Request $request
* @return Application|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
*/
public function postCreateStep1(Request $request)
{
$validatedData = $request->validate([
'title' => 'required',]);
if(empty($request->session()->get('recipe'))){
$recipe = new PostRecipes();
$recipe->fill($validatedData);
$request->session()->put('recipe',$recipe);
}else{
$recipe = $request->session()->get('recipe');
$recipe->fill($validatedData);
$request->session()->put('recipe',$recipe);
}
return redirect('/recipes/create-step2');
}
/**
* Show the step 2 Form for creating a new recipe.
*
* @return Application|Factory|Response|View
*/
public function createStep2(Request $request)
{
$recipe = $request->session()->get('recipe');
return view('recipes.create-step2',$recipe));
}
/**
* Post Request to store step1 info in session
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function postCreateStep2(Request $request)
{
$recipe = $request->session()->get('recipe');
if(!isset($recipe->productImg)) {
$request->validate([
'recipeimg' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',]);
$fileName = "recipeImage-" . time() . '.' . request()->recipeimg->getClientOriginalExtension();
$request->recipeimg->storeAs('recipeimg',$fileName);
$product = $request->session()->get('recipe');
$product->recipeImg = $fileName;
$request->session()->put('recipe',$recipe);
}
return redirect('/recipes/create-step3');
}
/**
* Show the Product Review page
*
* @param Request $request
* @return Application|Factory|View
*/
public function removeImage(Request $request)
{
$recipe = $request->session()->get('recipe');
$recipe->recipeImg = null;
return view('recipes.create-step2',compact('product',$recipe));
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。