这是我第一次使用堆栈溢出,所以希望你们能帮助我解决这个问题(并为我的英语不好道歉)
我的项目使用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
1条答案
按热度按时间30byixjq1#
访问$barang_masuk对象的属性时可能发生错误。
你可以在访问$barang_masuk的属性之前检查它是否不为空。
字符串