Пожалуйста, помогите мне, я не могу получить доступ к своему коду, он всегда показывает ошибку:
An uncaught Exception was encountered
Type: ArgumentCountError
Message: Too few arguments to function Gallery::edit(), 1 passed in C:\xampp\htdocs\eatsoc\system\core\CodeIgniter.php on line 532 and exactly 2 expected
Filename: C:\xampp\htdocs\eatsoc\application\controllers\backend\Gallery.php
Line Number: 53
Backtrace:
File: C:\xampp\htdocs\eatsoc\index.php
Line: 315
Function: require_once
Но в моем другом коде код работает нормально ...
Это код:
Контроллер: Gallery.php
class Gallery extends CI_Controller {
//Load Model
public function __construct()
{
parent::__construct();
$this->load->model('backend/Gallery_model');
$this->load->library('upload');
}
//Halaman Utama
public function index()
{
$gallery = $this->Gallery_model->listing();
$data = array('title' => 'Data Gallery ('.count($gallery).')',
'gallery' => $gallery,
'isi' => 'backend/gallery/list');
$this->load->view('backend/layout/wrapper', $data, FALSE);
}
//Halaman Tambah
public function tambah(){
//Validasi
$valid=$this->form_validation;
$valid->set_rules('tittle', 'tittle', 'required',
array('required' => 'tittle harus diisi'));
$valid->set_rules('file', 'file', 'required',
array('required' => 'Gambar harus diisi'));
if ($valid->run()===FALSE){
$data = array('title' => 'Tambah Gallery',
'isi' => 'backend/gallery/tambah');
$this->load->view('backend/layout/wrapper', $data, FALSE);
}else{
$i= $this->input;
$data = array('id_gallery' => $i->post('id_gallery'),
'tittle' => $i->post('tittle'),
'deskripsi'=> $i->post('deskripsi'),
'file'=> $i->post('file'),
);
$this->Gallery_model->tambah($data);
$this->session->set_flashdata('sukses','Data telah ditambah');
redirect(base_url('backend/gallery'),'refresh');
}
//End masuk database
}
//Halaman Edit
public function edit($id_gallery){
$gallery = $this->Gallery_model->detail($id_gallery);
//Validasi
$valid=$this->form_validation;
$valid->set_rules('tittle', 'tittle', 'required',
array('required' => 'tittle harus diisi'));
if ($valid->run()===FALSE){
$data = array('title' => 'Edit Gallery: '.$gallery->tittle,
'gallery' => $gallery,
'isi' => 'backend/gallery/edit');
$this->load->view('backend/layout/wrapper', $data, FALSE);
} else{
$i= $this->input;
$this->Gallery_model->edit($data);
$this->session->set_flashdata('sukses','Data telah diubah');
redirect(base_url('backend/gallery'),'refresh');
}
//End masuk database
}
//Halaman Delete
public function delete($id_gallery){
$data = array('id_gallery' => $id_gallery);
$this->Gallery_model->delete($data);
$this->session->set_flashdata('sukses', 'Data telah dihapus');
redirect(base_url('backend/gallery'),'refresh');
}
}
Модель: Gallery_model.php
class Gallery_model extends CI_Model{
public function __construct()
{
parent::__construct();
$this->load->database();
}
//Listing
public function listing(){
$this->db->select('*');
$this->db->from('gallery');
$this->db->order_by('id_gallery');
$query = $this->db->get();
return $query->result();
}
//Detail
public function detail($id_gallery){
$this->db->select('*');
$this->db->from('gallery');
$this->db->where('id_gallery',$id_gallery);
$this->db->order_by('id_gallery');
$query = $this->db->get();
return $query->row();
}
// Tambah
public function tambah($data){
$this->db->insert('gallery', $data);
}
// Edit
public function edit($id_gallery, $data){
$this->db->where('id_gallery', $data['id_gallery']);
$this->db->update('gallery', $data['id_gallery']);
}
// delete
public function delete($data){
$this->db->where('id_gallery', $data['id_gallery']);
$this->db->delete('gallery', $data);
}
}
Ввиду: Папка Admin / Галерея edit.php
<!-- Content Header (Page header) -->
<section class = "content-header">
<h1> Gallery </h1>
<ol class = "breadcrumb">
<li><a href = "#"><i class = "fa fa-dashboard"> Dasbor</i></a></li>
<li><a href = "<?php echo base_url('backend/gallery')?>"><i class = "fa fa-table"> </i>Gallery</a></li>
<li class = "active"> Edit</li>
</ol>
</section>
<div class = "box">
<div class = "box-header">
<p>
<a href = "<?php echo base_url('backend/gallery/edit')?>" class = "btn btn-success">
<i class = "fa fa-plus"></i>Edit</a>
</p>
<?php
//Notifikasi
if ($this->session->flashdata('sukses')){
echo '<div class = "alert alert-success"><i class = "fa fa-check">';
echo $this->session->flashdata('sukses');
echo '</div>';
}?>
</div>
<div class = "box-body">
<?php
//Notifikasi kalau ada input error
echo validation_errors('<div class = "alert alert-danger"><i class = "fa fa-warning"></i>','</div>');
//Open Form
echo form_open(base_url('backend/gallery/edit'));
?>
<div class = "col-md-12">
<div class = "form-group">
<label>Gambar</label><input type = "file" name = "file" class = "dropify" style = "width: 100%; height: 200px;" required> <?php echo $gallery->file?>
</div>
<br>
<div class = "form-group">
<label>tittle</label>
<input type = "text" name = "tittle" class = "form-control" placeholder = "tittle" value = "<?php echo $gallery->tittle?>" required>
</div>
<div class = "form-group">
<div class = "box">
<div class = "box-header">
<h3 class = "box-title">Deskripsi</h3>
</div>
<textarea class = "text" placeholder = "Deskripsi" style = "width:100%;height: 200px;line-height: 18px; border: 1px solid #dddddd; padding: 10px;" name = "deskripsi"><?php echo $gallery->deskripsi?></textarea>
</div>
</div>
</div>
<div class = "form-group">
<input type = "submit" name = "submit" class = "btn btn-success btn-lg" value = "edit">
<input type = "reset" name = "submit" class = "btn btn-default btn-lg" value = "Reset">
</div>
</div>
<?php
//Form Close
echo form_close();
?>
</div>






В Gallery.php измените эту строчку
public function edit($id_gallery){
...
$this->Gallery_model->edit($data);
...
}
К
public function edit($id_gallery){
...
$this->Gallery_model->edit($id_gallery, $data);
...
}
Это потому, что этот метод (в Gallery_model) определен следующим образом:
public function edit($id_gallery, $data){ ... }
Для чего требуются как идентификатор галереи, так и данные. Вы только отправили ему данные ...
Вариант 2
Другой вариант, поскольку кажется, что идентификатор является частью данных, - просто удалить этот первый аргумент в Gallery_model. Вот так это выглядит:
// Edit
public function edit($data){
$this->db->where('id_gallery', $data['id_gallery']);
$this->db->update('gallery', $data['id_gallery']); //see below
}
Ошибка немного сбивает с толку, но, вероятно, происходит из-за того, где этот метод вызывается в контроллере «Галерея».
Последний
Последнее, что может быть неправильным:
$this->db->update('gallery', $data['id_gallery']);
Я не часто использую CI, но кажется, что если вы выполняете обновление, вам понадобится больше данных, чем просто идентификатор галереи. Вполне возможно, что это должно быть:
$this->db->update('gallery', $data);
Но, как я уже сказал, в наши дни я не очень часто использую CI, поэтому я не могу сказать это наверняка. Но, похоже, в этом было бы гораздо больше смысла:
// Edit
public function edit($id_gallery, $data){
$this->db->where('id_gallery', $id_gallery);
$this->db->update('gallery', $data);
}
//and call it this way $this->Gallery_model->edit($id_gallery, $data);
В любом случае, надеюсь, это поможет
Ваше здоровье!
Что ж, тогда я не знаю, что тебе сказать.
Очень подробный и точный ответ.
Привет, спасибо за ответ, но мой код все еще застрял в коротком аргументе ... Я могу открыть редактирование, но я не могу его сохранить, каждый раз, когда я сохраняю его, он всегда будет превращаться в ошибку аргумента