codeigniter 尝试获取非对象的属性[从用户端]

hi3rlvi2  于 2023-08-01  发布在  其他
关注(0)|答案(1)|浏览(89)

这是我第一次使用堆栈溢出,所以希望你们能帮助我解决这个问题(并为我的英语不好道歉)
我的项目使用codeigniter 3
直奔主题案例:当用户1(管理员)创建了一个表单后,详细信息菜单将出现,用户1(管理员)可以看到它。但是,当用户2(员工)想要查看用户1(管理员)创建的详细信息菜单时,将出现错误,称“尝试获取非对象的属性”,两者具有相同的访问权限,但用户2(员工)无法从用户1(管理员)创建的菜单中查看详细信息,反之亦然。被检测为非对象的对象是:id_barang_masuk、id_user、nama、waktu。

<div class="container-fluid">
    
    <?php $this->load->view('layouts/_alert') ?>

    <div class="row" id="printBukti">
        <div class="col-md-12">
            <div class="card mb-3">
                <div class="card-header bg-primary text-white">
                    Detail Pemasukan Barang
                </div>
                <div class="card-body">
                    <table class="table-responsive mb-3 no-wrap">
                        <tr>
                            <td>Nomor pemasukan</td>
                            <td>:</td>
                            <td><?= $barang_masuk->id_barang_masuk ?></td> // id_barang_masuk error
                        </tr>
                        <tr>
                            <td>NIP Staff</td>
                            <td>:</td>
                            <td><?= $barang_masuk->id_user ?></td> // id_user error
                        </tr>
                        <tr>
                            <td>Nama Staff</td>
                            <td>:</td>
                            <td><?= $barang_masuk->nama ?></td> // nama error
                        </tr>
                        <tr>
                            <td>Waktu</td>
                            <td>:</td>
                            <td><?= date('d/m/Y H:i:s', strtotime($barang_masuk->waktu)) ?></td> // waktu error
                        </tr>
                    </table>

字符串
文件位置:views/pages/inputs/detail.php.
这是控制器

class Inputs extends MY_Controller 
{
    private $id_user;

    public function __construct()
    {
        parent::__construct();
        
        $this->id_user  = $this->session->userdata('id_user');
        $is_login       = $this->session->userdata('is_login');

        if (!$is_login) {
            $this->session->set_flashdata('warning', 'Anda belum login');
            redirect(base_url('login'));
            return;
        }
    }

    public function index($page = null)
    {
        $this->session->unset_userdata('keyword');
        $this->session->unset_userdata('time');
        
        $data['title']              = 'Inventory MS - List Barang Masuk';
        $data['breadcrumb_title']   = 'List Barang Masuk';
        $data['breadcrumb_path']    = 'Barang Masuk / List Barang Masuk';
        $data['content']            = $this->inputs->select([
                'barang_masuk.id', 'user.nama', 
                'barang_masuk.waktu', 'barang_masuk.total_harga'
            ])
            ->join('user')
            ->orderBy('barang_masuk.waktu', 'DESC')
            ->paginate($page)
            ->get();
        $data['total_rows'] = $this->inputs->count();
        $data['pagination'] = $this->inputs->makePagination(base_url('inputs'), 2, $data['total_rows']);
        $data['page']       = 'pages/inputs/index';
        
        $this->view($data);
    }


位置文件:controller/inputs.php
此进程控制器在开始访问详细信息菜单之前存在
除了输入中的文件之外,还有一个输出文件,其代码和错误与输入案例相同。
我试过使用if else,但它仍然不起作用

<?php if ($barang_masuk) { ?>
    <table class="table-responsive mb-3 no-wrap">
        <tr>
            <td>Nomor pemasukan</td>
            <td>:</td>
            <td><?= $barang_masuk->id_barang_masuk ?></td>
        </tr>
        <tr>
            <td>NIP Staff</td>
            <td>:</td>
            <td><?= $barang_masuk->id_user ?></td>
        </tr>
        <tr>
            <td>Nama Staff</td>
            <td>:</td>
            <td><?= $barang_masuk->nama ?></td>
        </tr>
        <tr>
            <td>Waktu</td>
            <td>:</td>
            <td><?= date('d/m/Y H:i:s', strtotime($barang_masuk->waktu)) ?></td>
        </tr>
    </table>
<?php } else { ?>
    <p>Data pemasukan barang tidak tersedia.</p>
<?php } ?>


有人能修好吗?
编辑:显示由用户1(管理员)创建并由同一用户查看的详细信息菜单。但是,如果由用户2(员工)查看,结果将不同/错误。Detail menu

30byixjq

30byixjq1#

访问$barang_masuk对象的属性时可能发生错误。
你可以在访问$barang_masuk的属性之前检查它是否不为空。

<?php if (!empty($barang_masuk)): ?>
    <table class="table-responsive mb-3 no-wrap">
        <tr>
            <td>Nomor pemasukan</td>
            <td>:</td>
            <td><?= $barang_masuk->id_barang_masuk ?></td>
        </tr>
        <tr>
            <td>NIP Staff</td>
            <td>:</td>
            <td><?= $barang_masuk->id_user ?></td>
        </tr>
        <tr>
            <td>Nama Staff</td>
            <td>:</td>
            <td><?= $barang_masuk->nama ?></td>
        </tr>
        <tr>
            <td>Waktu</td>
            <td>:</td>
            <td><?= date('d/m/Y H:i:s', strtotime($barang_masuk->waktu)) ?></td>
        </tr>
    </table>
<?php else: ?>
    <p>Data pemasukan barang tidak tersedia.</p>
<?php endif; ?>

字符串

相关问题