解析 Javascript 中的数据时显示非对象值的空结果

Showing empty result of non-object value when parsing data in Javascript

我将 Laravel 与 Sweetalert 一起使用,我试图显示自定义弹出消息,该消息显示 Laravel 变量的值:

      $(document).on('click', '#custombtn', function(e) {
            e.preventDefault();
            let form = $(this).parents('form');
            swal(
                {
                    title: "Alert!",
                    text: "Youre wallet balance is: {!! digits2persian(json_decode($user_wallet->balance)) !!}",
                    type: "warning",
                    allowEscapeKey: false,
                    allowOutsideClick: false,
                    showCancelButton: true,
                    confirmButtonColor: "#DD6B55",
                    confirmButtonText: "Yes",
                    cancelButtonText: "No",
                    showLoaderOnConfirm: true,
                    closeOnConfirm: false
                }).then((isConfirm) => {
                if (isConfirm.value === true) {
                    window.location.href = {!! json_encode(route('courseRegistrationWithWallet', ['course'=>$item->cor_id,'wallet'=>$user_wallet->id ?? ''])) !!}
                }
                return false;
            });
        });

但现在的问题是,当$user_wallet->balance返回null时,会出现这个错误:

正在尝试获取 属性 'balance' 的非对象

所以我尝试显示 empty 结果,如果未设置变量:

{!! digits2persian(json_decode($user_wallet->balance)) ?? '' !!}

但是没有解决这个问题,还是出现这个错误!

那么如何解决这个问题?

试试这个 if($user_wallet->balance > 0){}

或这个$user_wallet->balance ?? "0"

仔细阅读错误信息:

Trying to get property 'balance' of non-object

不是 余额 是空的,而是 包含 余额的东西。所以你需要处理 $user_wallet 为空,例如:

isset($user_wallet) ? digits2persian(json_decode($user_wallet->balance)) : 'No wallet'