首页 > 解决方案 > codeigniter 无法使用未定义的变量传递变量结果(在路由之后)

问题描述

所以我试图制作一个产品的详细信息页面,从产品列表中链接。我已经配置了路线。但是页面显示未定义的 foreach 变量出错。

这是错误:

A PHP Error was encountered
Severity: Notice

Message: Undefined variable: listproduk

Filename: user/view.php

Line Number: 28

Backtrace:

File: E:\xampp\htdocs\emedco\application\views\user\view.php
Line: 28
Function: _error_handler

File: E:\xampp\htdocs\emedco\application\controllers\ProdukList.php
Line: 19
Function: view

File: E:\xampp\htdocs\emedco\index.php
Line: 315
Function: require_once

详情页,view.php

<div class="container-fluid">
   <h4>Detail</h4>
   <h2><?php echo $listproduk['nama_produk']; ?></h2> <!--line 28-->
   <p><?php echo $listproduk['deskripsi_produk']; ?></p>
</div>

产品列表视图(详细视图之前的上一页,无错误),produklist.php

<?php foreach ($produk as $listproduk) : ?>
    <div class="col-6 col-md-4 col-xl-3 mb-4 ">
        <div class="card text-center shadow h-100 py-2">
            <img class="card-img-top" src="<?php echo base_url('images/product/' . $listproduk['img_produk']) ?>" width="100" alt="Card image cap">
            <div class="card-body">
                <h6 class="card-title"><?php echo $listproduk['nama_produk']; ?></h6>
                <p style="font-size:80%;" class="card-text">Kategori obat</p>
                <p style="font-size:80%;" class="card-text">Rp. <?php echo $listproduk['harga_produk']; ?></p>
            </div>
            <div class="card-footer">
                <a href="<?php echo site_url('ProdukList/'.$listproduk['kode_produk']); ?>" class="btn btn-primary btn-block btn-sm">Detail</a>
            </div>
        </div>
    </div>
<?php endforeach; ?>

控制器,ProdukList.php

<?php

class ProdukList extends CI_Controller
{
    public function index()
    {
        $data['produk'] = $this->ProdukList_model->get_produk();
        $this->load->view('user/produklist', $data);
    }

    public function view($kode_produk = NULL)
    {
        $data['produkdet'] = $this->ProdukList_model->get_produk($kode_produk);

        if (empty($data['produkdet'])) {
            show_404();
        }

        $this->load->view('user/view', $data); <!--line 19-->

    }
}

试图在 $data 之后添加 true ,$this->load->view('user/view', $data, true);它会显示空白页。

模型ProdukList_model.php

<?php

class ProdukList_model extends CI_Model
{
    public function __construct() {
        $this->load->database();
    }

    public function get_produk($kode_produk = FALSE)
    {
        if($kode_produk === FALSE)
        {
            $query = $this->db->get('tb_produk');
            return $query->result_array();
        }
        $query = $this->db->get_where('tb_produk', array('kode_produk' => $kode_produk));
        return $query->row_array();
    }
}

routes.php

$route['ProdukList/(:any)'] = 'ProdukList/view/$1';
$route['default_controller'] = 'Dashboard';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

autoload.php

$autoload['model'] = array('ProdukList_model');

有什么问题?

标签: phpcodeignitercodeigniter-3

解决方案


我认为您应该在视图中$produkdet['nama_produk']而不是$listproduk['nama_produk']第 28 行。下一行也一样。


推荐阅读