You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 8 ErrorException: Undefined variable: pesan问题求助

Laravel 8:Undefined variable: pesan 错误解决

开发Laravel 8项目时遭遇ErrorException Undefined variable: pesan错误,该错误触发于RegisterController的simpan_rm方法末尾调用$pesan变量的位置,尝试修改返回语句后问题仍未解决。

控制器代码

public function simpan_rm(Request $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);  
     
}

错误原因

$pesan变量仅在switch语句的simpan_edit和simpan_baru分支中定义,当$request->simpan的值不属于这两个分支时(比如参数缺失、值错误),$pesan未被初始化,就会触发未定义变量的错误。

解决方案

1. 为switch添加default分支

确保任何情况下$pesan都被定义:

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:
        // 定义默认跳转地址和提示信息
        $buka=route('rm.index'); // 示例:跳转到列表页
        $pesan='Operasi tidak valid!';
    break;
}

2. 提前初始化变量

在switch语句前先初始化$pesan和$buka,避免未定义:

$buka = route('rm.index'); // 默认跳转地址
$pesan = 'Operasi tidak valid!'; // 默认提示信息

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;
}

3. 验证请求参数

在请求验证规则中添加对simpan字段的校验,确保其值只能是指定的选项:

$this->validate($request, [
    // 原有规则...
    'simpan' => 'required|in:simpan_edit,simpan_baru',
]);

内容的提问来源于stack exchange,提问作者Farid Naufal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 11:25:30