我尝试执行两个步骤,从第一步开始以会话形式存储数据,然后以第二种形式尝试将数据与步骤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');
}

10-06 12:30
查看更多