【发布时间】:2020-01-13 21:55:11
【问题描述】:
我在 Codeigniter 的另一个函数中调用函数有问题。所以我有 2 个功能:
函数 1 有 Controller 用于从数据库中获取数据:
public function tampil_halaman_berita()
{
$data['tampil_berita'] = $this->berita->getAllBerita();
$data['tampil_kategori'] = $this->berita->getAllKategori();
$data['tampil_wartawan'] = $this->berita->getAllWartawan();
}
函数 2 从函数 1 调用 Controller 到索引:
public function index()
{
$data['judul'] = "Halaman Berita";
$this->tampil_halaman_berita();
$this->load->view('ui/Header');
$this->load->view('pages/Berita', $data);
$this->load->view('ui/Footer');
}
但我收到此错误,我的函数 tampil_halaman_berita 未调用到 index()
Severity: Notice
Message: Undefined variable: tampil_berita
Filename: pages/Berita.php
Line Number: 17
Backtrace:
File: C:\xampp\htdocs\flutter-news\application\views\pages\Berita.php
Line: 17
Function: _error_handler
File: C:\xampp\htdocs\flutter-news\application\controllers\pages\Berita.php
Line: 21
Function: view
File: C:\xampp\htdocs\flutter-news\index.php
Line: 315
Function: require_once
我不想,像这样对我的所有函数重复每个模型,所以我创建了一些函数,我只是调用函数名。
public function add(){
$data['tampil_berita'] = $this->berita->getAllBerita();
$data['tampil_kategori'] = $this->berita->getAllKategori();
$data['tampil_wartawan'] = $this->berita->getAllWartawan();
}
public function update(){
$data['tampil_berita'] = $this->berita->getAllBerita();
$data['tampil_kategori'] = $this->berita->getAllKategori();
$data['tampil_wartawan'] = $this->berita->getAllWartawan();
}
希望大家能理解我的问题。
谢谢
如果你需要我的完整控制器
<?php
class Berita extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->library('session');
$this->load->model('pages/Berita_model', 'berita');
}
public function tampil_halaman_berita()
{
$data['tampil_berita'] = $this->berita->getAllBerita();
$data['tampil_kategori'] = $this->berita->getAllKategori();
$data['tampil_wartawan'] = $this->berita->getAllWartawan();
}
public function index()
{
$data['judul'] = "Halaman Berita";
// $data['tampil_kategori'] = $this->berita->getAllKategori();
// $data['tampil_wartawan'] = $this->berita->getAllWartawan();
// $data['tampil_berita_join'] = $this->berita->getBeritaJoin();
$this->tampil_halaman_berita();
$this->load->view('ui/Header');
$this->load->view('pages/Berita', $data);
$this->load->view('ui/Footer');
}
public function add()
{
$data['judul'] = " Halaman Berita";
$data['tampil_berita'] = $this->berita->getAllBerita();
$data['tampil_kategori'] = $this->berita->getAllKategori();
$data['tampil_wartawan'] = $this->berita->getAllWartawan();
$this->form_validation->set_rules('judul_berita', 'Judul Berita', 'required');
$this->form_validation->set_rules('isi_berita', 'Isi Berita', 'required');
if (empty($_FILES['gambar_berita']['name'])) {
$this->form_validation->set_rules('gambar_berita', 'Gambar Berita', 'required');
}
if ($this->form_validation->run() == FALSE) {
$this->load->view('ui/Header');
$this->load->view('pages/Berita', $data);
$this->load->view('ui/Footer');
} else {
$config['upload_path'] = './images/berita';
$config['allowed_types'] = "gif|jpg|png|jpeg";
$config['max_size'] = '2000'; // max size in KB
$config['encrypt_name'] = TRUE;
$this->load->library('upload', $config);
$this->upload->initialize($config);
if (!$this->upload->do_upload('gambar_berita')) {
$error = array('error' => $this->upload->display_errors());
$this->session->set_flashdata('error', $error['error']);
$this->load->view('ui/Header');
$this->load->view('pages/Berita', $data);
$this->load->view('ui/Footer');
} else {
$info = $this->upload->data();
$image_path = $info['raw_name'] . $info['file_ext'];
$data = [
"id_wartawan" => $this->input->post('wartawan_berita'),
"id_kategori" => $this->input->post('kategori_berita'),
"judul_berita" => $this->input->post('judul_berita'),
"isi_berita" => $this->input->post('isi_berita'),
"gambar_berita" => $image_path,
"tanggal_berita" => date('Y-m-d'),
"status_berita" => "false",
"ket_berita" => $this->input->post('ket_berita'),
];
$addBerita = $this->berita->addBerita($data);
if ($addBerita) {
redirect('pages/Berita', 'refresh');
} else {
redirect('gagal', 'refresh');
}
}
}
}
public function delete($id)
{
$this->berita->deleteBerita($id);
redirect('pages/Berita', "refresh");
}
public function update($id)
{
$data['judul'] = "Update Berita";
$data['tampil_berita'] = $this->berita->getBeritaById($id);
$data['tampil_kategori'] = $this->berita->getAllKategori();
$data['tampil_wartawan'] = $this->berita->getAllWartawan();
$this->form_validation->set_rules('judul_berita', 'Judul Berita', 'required');
$this->form_validation->set_rules('isi_berita', 'Isi Berita', 'required');
if (empty($_FILES['gambar_berita']['name'])) {
$this->form_validation->set_rules('gambar_berita', 'Gambar Berita', 'required');
}
if ($this->form_validation->run() == FALSE) {
$this->load->view('ui/Header');
$this->load->view('pages/update/Berita_update', $data);
$this->load->view('ui/Footer');
} else {
$config['upload_path'] = './images/berita';
$config['allowed_types'] = "gif|jpg|png|jpeg";
$config['max_size'] = '2000'; // max size in KB
$config['encrypt_name'] = TRUE;
$this->load->library('upload', $config);
$this->upload->initialize($config);
if (!$this->upload->do_upload('gambar_berita')) {
$error = array('error' => $this->upload->display_errors());
$this->session->set_flashdata('error', $error['error']);
$this->load->view('ui/Header');
$this->load->view('pages/update/Berita_update', $data);
$this->load->view('ui/Footer');
} else {
$id_berita = $this->input->post('id_berita');
$info = $this->upload->data();
$image_path = $info['raw_name'] . $info['file_ext'];
$data = [
"id_wartawan" => $this->input->post('wartawan_berita'),
"id_kategori" => $this->input->post('kategori_berita'),
"judul_berita" => $this->input->post('judul_berita'),
"isi_berita" => $this->input->post('isi_berita'),
"gambar_berita" => $image_path,
"ket_berita" => $this->input->post('ket_berita'),
];
$updateBerita = $this->berita->updateBerita($data, $id_berita);
if ($updateBerita) {
redirect('pages/Berita', 'refresh');
} else {
redirect('gagal', 'refresh');
}
}
}
}
}
【问题讨论】:
-
id 你在 MODEL 中定义了方法,然后在你可以使用的任何控制器中。首先加载特定模型,然后从控制器调用模型方法。
-
@DevsiOdedra 对不起,我可以举个简单的例子吗?
-
您可以使用 CI 3 从控制器调用模型,而不是从模型到模型。
-
@DevsiOdedra 哎呀,我想我想念将 Controller 写到 Model,我编辑了它。对不起
-
您必须从
tampil_halaman_berita返回数据并根据您的index传递,函数调用没问题,但您没有将数据传递给查看。
标签: php codeigniter