【问题标题】:i have error An uncaught Exception was encountered Type: ArgumentCountError Message: Too few arguments to function我有错误遇到未捕获的异常类型:ArgumentCountError 消息:函数的参数太少
【发布时间】:2020-04-16 00:39:37
【问题描述】:

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

但有如下错误,

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

消息:函数 Operator::edit_berita() 的参数太少,在第 532 行的 D:\xampp\htdocs\ui-desa\system\core\CodeIgniter.php 中传递了 0,而预期正好是 1

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

行号:164

回溯:

文件:D:\xampp\htdocs\ui-desa\index.php 线路:315 函数:require_once

控制器 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');
        }
    } 

模型model_berita.php

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

查看edit_berita.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>

我尝试了很多方法,但它仍然是一个错误。请帮助,以便我的新闻更新功能可以工作。谢谢。

【问题讨论】:

    标签: php codeigniter-3


    【解决方案1】:

    你的错误清楚地表明你的方法。

    public function edit_berita($id_berita) 
    

    需要一个参数,您已将其命名为 $id_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_mulitpart
    <?= 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 是否正确。

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

    希望能给你一些指导。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-10
      • 2019-06-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-11
      • 2018-04-16
      相关资源
      最近更新 更多