我尝试执行两个步骤,从第一步开始以会话形式存储数据,然后以第二种形式尝试将数据与步骤1的数据存储在会话中。所有查询都运行,但是laravel仅存储字段输入。
我能做什么?
我的第二个表单数据存储在数据库中,但是我的第一个表单数据变为空值。
这是我的控制器文件
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Admissionform;
class AdmissionformController extends Controller
{
/**
* Show the step 1 Form for creating a new product.
*
* @return \Illuminate\Http\Response
*/
public function createStep2(Request $request)
{
$admissionform = $request->session()->get('admissionform');
return view('front_office_desk.create-step2',compact('admissionform', $admissionform));
}
/**
* Show the step 1 Form for creating a new product.
*
* @return \Illuminate\Http\Response
*/
public function createStep3(Request $request)
{
return view('front_office_desk.create-step3');
}
/**
* Post Request to store step1 info in session
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function postCreateStep1(Request $request)
{
$request->validate([
'name' => 'required',
'dateOfBirth' => 'required',
'contactNumber1' => 'required',
'contactNumber2' => 'required',
'email' => 'required',
'reference' => 'required',
'address' => 'required',
'purpose_of_visit' => 'required',
'intend_to_apply_for' => 'required',
'any_applied_file_for_visa' => 'required',
'acknowledgement' => 'required',
]);
if(empty($request->session()->get('admissionform'))){
$admissionform = new Admissionform();
$admissionform->fill($validatedData);
$request->session()->put('admissionform', $admissionform);
}
return redirect('/front_office_desk/create-step2')
->with('success','Product updated successfully');
}
public function postCreateStep2(Request $request)
{
$request->validate([
'specialization' => 'required',
'12institute_name' => 'required',
'12board_name' => 'required',
'12passing_date' => 'required',
'12course_type' => 'required',
'12marks' => 'required',
]);
$admissionform = $request->session()->get('admissionform');
$admissionform = $request->all();
$admissionform->save();
return redirect('/front_office_desk/create-step3')
->with('success','Product updated successfully');
}
}
最佳答案
我不明白为什么这也不起作用。尽管据我了解,您实际上在创建两次。但是我想可以采用另一种方法:
1.)不要在会话中存储AdmissionForm的整个实例,而仅存储经过验证的数据
2.)在第二种情况下存储时添加,然后合并这两个数组并将其保存为一个:
/**
* Post Request to store step1 info in session
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function postCreateStep1(Request $request)
{
$validatedData = $request->validate([
'name' => 'required',
'dateOfBirth' => 'required',
'contactNumber1' => 'required',
'contactNumber2' => 'required',
'email' => 'required',
'reference' => 'required',
'address' => 'required',
'purpose_of_visit' => 'required',
'intend_to_apply_for' => 'required',
'any_applied_file_for_visa' => 'required',
'acknowledgement' => 'required',
]);
if(empty($request->session()->get('admissionform'))){
$request->session()->put('admissionform', $validatedData );
}
return redirect('/front_office_desk/create-step2')
->with('success','Product updated successfully');
}
public function postCreateStep2(Request $request)
{
$request->validate([
'specialization' => 'required',
'12institute_name' => 'required',
'12board_name' => 'required',
'12passing_date' => 'required',
'12course_type' => 'required',
'12marks' => 'required',
]);
$admissionform = $request->session()->get('admissionform');
$data = array_merge(request()->all(), $admissionform));
Admissionform::create($data);
return redirect('/front_office_desk/create-step3')
->with('success','Product updated successfully');
}