laravel 公共函数中未定义的变量

8yoxcaq7  于 2023-02-17  发布在  其他
关注(0)|答案(2)|浏览(153)

我遇到了错误:
ErrorException Undefined variable: pesan
我经历过类似的问题解决这里,但没有一个解决方案对我有效。
错误从行底部的RegisterController抛出。在pesan
我用laravel 8
下面是我的控制器代码:
'公共函数simpan_rm(请求$request){

$this->validate($request, [
        'idpasien' => 'required|numeric|digits_between:1,4',
        'keluhan_utama' => 'required|max:40',
        'anamnesis' => 'required|max:1000',
        'px_fisik' => 'max:1000',
        'diagnosis' => 'max:40',
        'dokter' => 'required',
    ]);
   // Decoding array input pemeriksaan lab
   if (isset($request->lab))
   {
        if (has_dupes(array_column($request->lab,'id'))){
            $errors = new MessageBag(['lab'=>['Lab yang sama tidak boleh dimasukan berulang']]);
            return back()->withErrors($errors);
        }
        $this->validate($request, [
            'lab.*.hasil' => 'required|numeric|digits_between:1,4',          
        ]);
        $lab_id = decode('lab','id',$request->lab);
        $lab_hasil = decode('lab','hasil',$request->lab);
   }
   else {
    $lab_id ="";
    $lab_hasil ="";
   }

   // Decoding array input resep
   if (isset($request->resep))
    {
        if (has_dupes(array_column($request->resep,'id'))){
            $errors = new MessageBag(['resep'=>['resep yang sama tidak boleh dimasukan berulang']]);
            return back()->withErrors($errors);
        }
        $this->validate($request, [
            'resep.*.jumlah' => 'required|numeric|digits_between:1,3',
            'resep.*.aturan' => 'required',
        ]);
        $resep_id = decode('resep','id',$request->resep);
        $resep_jumlah = decode('resep','jumlah',$request->resep);
        $resep_dosis = decode('resep','aturan',$request->resep); 
    }
    else {
        $resep_id = "";
        $resep_jumlah = "";
        $resep_dosis = "";
    }
    $newresep = array();
    $oldresep=array();
    if (is_array($request) || is_object($newresep))
    {
    foreach ($request->resep as $resep){
        $newresep[$resep['id']] = $resep['jumlah'];
    }
    }
    if (empty($oldresep)) {
        $resultanresep = resultan_resep($oldresep,$newresep);
    }
    else {$resultanresep=$newresep;}
    $errors = validasi_stok($resultanresep);
    if ($errors !== NULL) {
      return  back()->withErrors($errors);
    }

    foreach ($resultanresep as $key => $value) {
        $perintah=kurangi_stok($key,$value);
        if ($perintah === false) { $habis = array_push($habis,$key); }
    }

    DB::table('rm')->insert([
        'idpasien' => $request->idpasien,
        'ku' => $request->keluhan_utama,
        'anamnesis' => $request->anamnesis,
        'pxfisik' => $request->px_fisik,
        'lab' => $lab_id,
        'hasil' => $lab_hasil,
        'diagnosis' => $request->diagnosis,
        'resep' => $resep_id,
        'jumlah' => $resep_jumlah,
        'aturan' => $resep_dosis,
        'dokter' => $request->dokter,
        'created_time' => Carbon::now(),
        'updated_time' => Carbon::now(),
    ]);

       $ids= DB::table('rm')->latest('created_time')->first();         
        switch($request->simpan) {
            case 'simpan_edit': 
                $buka=route('rm.edit',$ids->id);
                $pesan='Data Rekam Medis berhasil disimpan!';
            break;             
            case 'simpan_baru': 
                $buka=route('rm.tambah.id',$request->idpasien);;
                $pesan='Data Rekam Medis berhasil disimpan!';
            break;
        }
   
     return redirect('buka')->with('pesan',$pesan);  
     
}`

不幸的是,我修改了return redirect('buka')->with('pesan',$pesan);,但没有为我工作。请帮助

m2xkgtsf

m2xkgtsf1#

在switch语句的两种情况下定义了$pesan
那么当$request->simpan既不等于simpan_edit也不等于simpan_baru时会发生什么呢?
在这种情况下(您的代码中没有处理),$pesan将是未定义的,并且将抛出错误。
使用switch语句的一个好习惯是添加一个default: case,它将匹配您没有显式设置case:的任何其他值。
示例:

switch($request->simpan) {
    case 'simpan_edit': 
        $buka=route('rm.edit',$ids->id);
        $pesan='Data Rekam Medis berhasil disimpan!';
        break;             
    case 'simpan_baru': 
        $buka=route('rm.tambah.id',$request->idpasien);;
        $pesan='Data Rekam Medis berhasil disimpan!';
        break;
    default:
        // you may set a default value for `$pesan` here
        $pesan=null;                
}
khbbv19g

khbbv19g2#

这个错误似乎与$pesan变量有关,根据您提供的代码,$pesan没有在控制器中的任何地方定义,这就是您收到Error Exception Undefined变量的原因:pesan错误要解决此问题,您应该定义$pesan变量或删除代码中对它的任何引用。如果$pesan用于存储某些消息,则应该在使用之前定义它并为其赋值

相关问题