简体   繁体   English

我尝试使用会话数据调用数组上的成员函数 save()

[英]i try Call to a member function save() on array with session data

I try to make a two step from which first form data stored in session and in second form, I try to save data with data of step 1 which is stored in session.我尝试进行两个步骤,其中第一个表单数据存储在会话中,第二个表单中,我尝试使用存储在会话中的步骤 1 的数据保存数据。 All queries run but laravel only stored the field inputs .所有查询都运行,但 laravel 只存储字段输入。 What can I Do?我能做什么? my second form data stored in database but my first form data goes to null value.我的第二个表单数据存储在数据库中,但我的第一个表单数据变为空值。 This is my controller file这是我的控制器文件

<?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');
}                 
}

I don't understand why that ain't working either.我不明白为什么这也不起作用。 Though from my understanding you are actually creating twice.尽管根据我的理解,您实际上是在创建两次。 But I guess a different approach would do:但我想一种不同的方法会做:

1.) Don't store the whole instance of the AdmissionForm in session, just store the validated data 1.) 不要在会话中存储整个AdmissionForm 实例,只存储经过验证的数据

2.) Add then when storing in the second case, merge these two arrays and save them as one: 2.) 添加 then 在第二种情况下存储时,合并这两个数组并将它们保存为一个:

/**
 * 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');
}  

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM