codeigniter не может передать результаты переменной с неопределенной переменной (после маршрутов) - PullRequest
0 голосов
/ 08 апреля 2020

Так что я пытаюсь сделать подробную страницу продукта, связанную из списков продуктов. Я уже настроил маршруты. Но на странице говорится об ошибке с неопределенной переменной 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-->

    }
}

попытался добавить true после $ data, чтобы быть $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');

Что проблема?

Ответы [ 3 ]

1 голос
/ 08 апреля 2020

Я думаю, вы должны иметь $produkdet['nama_produk'] вместо $listproduk['nama_produk'] в строке 28 в представлении. То же самое на следующей строке.

1 голос
/ 08 апреля 2020

пожалуйста, посмотрите в вашем контроллере, что вы отправляете на просмотр. Вы отправляете данные ['produk'] в функции индекса вашего контроллера, и вместо этого вы добавляете 'listproduk' вместо 'produ c'; попробуйте это "

0 голосов
/ 09 апреля 2020

Сообщение об ошибке: ...

A PHP Произошла ошибка. Серьезность: уведомление

Сообщение: неопределенная переменная: listproduk

Имя файла: пользователь /view.php

Номер строки: 28

Итак, посмотрим, что будет выглядеть как строка 28 в вашем пользователе / ​​просмотре. php файл, который у вас есть ...

<h2><?php echo $listproduk['nama_produk']; ?></h2> <!--line 28-->

Итак, что бы вы сделали сейчас, посмотрите, куда вы передаете переменные в ваше представление.

В вашем ProdukList. php Контроллер у вас есть

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 ['produket'] , которая будет передана в ваше представление. По вашему мнению, это будет $ produket, который является массивом.

Но ваше представление ожидает массив с именем $ data ['listproduk'] , что приведет к вызову $ listproduk внутри представления.

Таким образом, сообщение об ошибке ясно указывает на то, что вы либо не передаете правильное значение представлению, либо переменная в представлении неверна, либо это неправильный взгляд ... В любом случае, это не правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...