当前位置: 首页 > 知识库问答 >
问题:

我有一个错误遇到一个未捕获的异常类型:ArgumentCountError消息:参数太少无法运行

曾嘉荣
2023-03-14

我正在使用CodeIgniter 3制作新闻编辑功能,这里还有一个图像编辑功能

但有如下错误:,

遇到未捕获的异常类型: ArgumentCountError

消息:函数运算符::edit_berita()的参数太少,在D:\xampp\htdocs\ui desa\system\core\CodeIgniter中传递了0。php在第532行,预期正好为1

文件名:D:\xampp\htdocs\ui-desa\application\controllers\Operator。php

行号: 164

回溯:

文件:D:\xampp\htdocs\ui-desa\index。php行:315函数:需要一次

控制器Operator.php

public function edit_berita($id_berita) 
    {
        $data['title'] = 'Edit Berita';
        $data['user'] = $this->db->get_where(
            'user',
            ['id' => $this->session->userdata('id')],
            ['email' => $this->session->userdata('email')]
        )->row_array();

           $data['berita'] = $this->model_berita->getAllBeritaById($id_berita);
        // $data['berita'] = $this->db->get('berita')->result_array();
        // $data['berita'] = $this->model_berita->getNama();

        $this->form_validation->set_rules('judul_berita', 'Judul Berita', 'required');
        $this->form_validation->set_rules('isi_berita', 'Isi Berita', 'required');

        if ($this->form_validation->run() == false) {
            $this->load->view('templates/header', $data);
            $this->load->view('templates/sidebar', $data);
            $this->load->view('templates/topbar', $data);
            $this->load->view('operator/editberita', $data);
            $this->load->view('templates/footer');
        } else {

            $judul_berita     = $this->input->post('judul_berita');
            $slug_berita      = url_title($this->input->post('judul_berita'), 'dash', 'TRUE');
            $isi_berita       = $this->input->post('isi_berita');
            $tgl_berita       = date('Y-m-d H:i:s');
            $id             = $this->session->userdata('id');

            // Cek Jika Ada Gambar Yang DiUpload
            $upload_image = $_FILES['gambar_berita'];

            if ($upload_image) {
                $config['allowed_types'] = 'gif|jpg|png';
                $config['max_size'] = '2048';
                $config['upload_path'] = './gambar_berita/';

                $this->load->library('upload', $config);

                if ($this->upload->do_upload('gambar_berita')) {
                    $old_image = $data['berita']['gambar_berita'];
                    if ($old_image != 'default.jpg') {
                        unlink(FCPATH . 'gambar_berita/' . $old_image);
                    }

                    $new_image = $this->upload->data('file_name');
                    $this->db->set('gambar_berita', $new_image);
                } else {
                    echo $this->upload->display_errors();
                }
            }


            $this->db->set('id_berita', $id_berita);

            $data = array(
                'judul_berita' => $judul_berita, 
                'isi_berita' => $isi_berita
            );

            $this->db->where($data); 
            $this->db->update('berita');
            $this->session->set_flashdata('message', '<div class="alert alert-success" role ="alert"> Berita Berhasil di Reposting </div>');
            redirect('operator/berita');
        }
    } 

贝里塔模型。php

public function getAllBeritaById($id_berita)
  {
    return $this->db->get_where('berita', ['id_berita' => $id_berita])->row_array();
  }

查看编辑。php

<!-- CK Editor 4 -->
 <script src="<?= base_url('ckeditor/'); ?>ckeditor.js"></script>
 <script src="<?= base_url('ckeditor/'); ?>samples/js/sample.js"></script>
 <link href="<?= base_url('ckeditor/'); ?>samples/css/samples.css" rel="stylesheet">
 <link href="<?= base_url('ckeditor/'); ?>samples/toolbarconfigurator/lib/codemirror/neo.css" rel="stylesheet">

 <!-- Begin Page Content -->
 <div class="container-fluid">

     <!-- Page Heading -->
     <h1 class="h3 mb-4 text-gray-800">

         <?= $title; ?></h1>

     <div class="row">
         <div class="col-lg">

             <?php if (validation_errors()) :  ?>
                 <div class="alert alert-danger" role="alert">
                     <?= validation_errors(); ?>
                 </div>
             <?php endif; ?>

             <?= $this->session->flashdata('message'); ?>

             <?= form_open_multipart('operator/edit_berita') ?>

             <form action="" method="post">

                 <input type="hidden" name="id" value="<?= $berita['id_berita']; ?>">

                 <div class="modal-body">
                     <div class="form-group">
                         <small>Masukkan Judul Berita</small>
                         <input type="text" value="<?= $berita['judul_berita']; ?>" class="form-control" id="judul_berita" name="judul_berita" placeholder="Judul Berita..." required>
                     </div>

                     <div class="form-group">
                         <small>Masukkan Isi Berita</small>
                         <textarea class="form-control" name="isi_berita" id="editor" required><?= $berita['isi_berita']; ?></textarea>
                     </div>

                     <div class="form-group">
                         <label for="gambar_berita">Ganti Gambar Berita</label>
                         <div class="col-sm-12">
                             <div class="row">
                                 <div class="col-sm-3">
                                     <img src="<?= base_url('gambar_berita/') . $berita['gambar_berita']; ?>" class="img-thumbnail" alt="Gambar Berita">
                                 </div>
                                 <div class="col-sm-9">
                                     <div class="custom-file">
                                         <input type="file" class="custom-file-input" id="gambar_berita" name="gambar_berita">
                                         <label class="custom-file-label" for="gambar_berita">Choose File</label>
                                     </div>
                                 </div>
                             </div>

                     </div>
<br>
                     <button type="reset" class="btn btn-danger" data-dismiss="modal">Reset</button>
                     <button type="submit" class="btn btn-primary">Add</button>

                 </div>
             </form>

         </div>
     </div>

 </div>
 <!-- /.container-fluid -->

 </div>
 <!-- End of Main Content -->

 <script>
     initSample();
 </script>

我尝试了很多方法,但仍然是个错误。请提供帮助,以便我的新闻更新功能能够正常工作。谢谢

共有1个答案

阎修杰
2023-03-14

你的错误清楚地说明了你的方法。

public function edit_berita($id_berita) 

需要一个参数,您已将其命名为$id\u berita。

我不知道为什么你决定在这个方法中有一个参数,所以我只能提出一些建议来帮助你解决你的问题。

根据我从您提供的代码中收集的信息,您可以尝试以下选项。。。

选项1:从您的表单中可以看出,您将此作为隐藏输入发布,因此您应该从发布数据中检索它。

<input type="hidden" name="id" value="<?= $berita['id_berita']; ?>">

所以你的方法应该是。。。

public function edit_berita() 
{
    $id_berita = $this->input->post('id'); // This needs to be validated

// The rest of your code below here...
}

但在处理任何其他内容之前,我会先验证该值,看看它是否存在。

就我个人而言,我会在你的表格中将它命名为id_berita,以保持事物的一致性,避免错误。

选项2:另一个选项是修改您的表单

<?= form_open_multipart('operator/edit_berita') ?>

要包含作为参数传递的id

<?= form_open_multipart('operator/edit_berita/'.$berita['id_berita']) ?>

您必须通过使用浏览器“查看源代码”检查HTML源代码,并检查HTML以查看它是否位于正确的位置。

这将允许您使用现有的方法

public function edit_berita($id_berita) 

但同样,您需要验证传入的$id_berita是否正确。

无论你走哪条路,都是你的选择。您只需要通读代码并更好地理解它。

我希望这能给你一些指导。

 类似资料: