Codeigniter form_open_multipart не ответил - PullRequest
0 голосов
/ 29 апреля 2020

Пробовал codeigniter и хотел создать форму с загрузкой файла с помощью класса upload. Однако, когда я пытаюсь сохранить форму, она не отвечает и просто показывает ту же страницу. Я оглядывался по сторонам, но не могу понять, как заставить это работать.

Это контроллер Product. php

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

Class Product extends CI_Controller{
    function __construct(){
        parent::__construct();
        check_not_login();
        $this->load->model('product_m');
    }

    public function index(){
        $data['row'] = $this->product_m->get();
        $this->template->load('template', 'product/data/product_data', $data);
    }

    public function add(){
        $product = new stdClass();
        $product->product_id = null;
        $product->product_name = null;
        $product->customer_name = null;
        $product->supplier_name = null;
        $product->weight = null;
        $product->product_date = null;
        $product->expired_date = null;
        $product->image = null;
        $product->barcode = null;

        $data = array(
            'page' => 'add',
            'row' => $product
        );
        $this->template->load('template', 'product/data/product_form', $data);
    }

    public function edit($id){
        $query = $this->product_m->get($id);
        if($query->num_rows()>0){
            $product = $query->row();
            $data = array(
                'page' => 'edit',
                'row' => $product
            );
            $this->template->load('template', 'product/data/product_form', $data);
        }else{
            echo "<script>alert('Data not found');";
            echo "window.location='".site_url('product')."';</script>";
        }
    }

    public function process(){
        $post = $this->input->post(null, TRUE);
        if(isset($_POST['add'])){
            $config['upload_path'] = './uploads/product';
            $config['allowed_types'] = 'jpeg|pdf|jpg|png|doc|docs|xls|xlsx';
            $config['max_size'] = 5120;
            $config['file_name'] = 'product-'.date('ymd').'-'.substr(md5(rand()),0,10);
            $this->load->library('upload', $config);

            if(@$_FILES['image']['name'] !=null){
                if($this->upload->do_upload('image')){
                    $post['image'] = $this->upload->data('file_name');
                    $this->product_m->add($post);

                    if($this->db->affected_rows() > 0){
                        $this->session->set_flashdata('success', 'Data saved successfully');
                    }
                    redirect('product');
                }else{
                    $error = $this->upload->display_errors();
                    $this->session->set_flashdata('error', $error);
                    redirect('product/add');
                }  
            }
            else{
                $post['image'] = null;
                $this->product_m->add($post);
                if($this->db->affected_rows() > 0){
                    $this->session->set_flashdata('success', 'Data saved successfully');
                }
                redirect('product');
            }
        }else if(isset($_POST['edit'])){
            $this->product_m->edit($post);
        }
    }

    public function del($id){
        $this->product_m->del($id);
        if($this->db->affected_rows() > 0){
            $this->session->set_flashdata('Success', 'Data successfully deleted');
        }
        redirect('product');
    }
}

Скрипт для формы product_form. php

<section class="content-header">
    <h1>
        Product
        <small>Add product</small>
    </h1>
</section>

<section class ="content">
    <div class="box">
        <div class="box-header">
            <h3 class="box-title"> product</h3>
            <div class="pull-right">
                <a href="<?=site_url('product')?>" class="btn btn-warning btn-flat">
                    <i class="fa fa-undo"></i> Back
                </a>
            </div>
        </div>

        <div class="box-body">
            <div class="row">
                <div class="col-md-4 col-md-offset-4">
                    <?php echo form_open_multipart('product/process');?>
                        <div class="form-group">
                            <label>Product Name *</label>
                            <input type="hidden" name="id" value="<?=$row->product_id?>">
                            <input type="text" name="product_name" value="<?=$row->product_name?>" class="form-control" required>
                        </div>
                        <div class="form-group">
                            <label>Customer Name *</label>
                            <input type="text" name="customer_name" value="<?=$row->customer_name?>" class="form-control" required>
                        </div>
                        <div class="form-group">
                            <label>Supplier Name *</label>
                            <input type="text" name="supplier_name" value="<?=$row->supplier_name?>" class="form-control" required>
                        </div>
                        <div class="form-group">
                            <label>Weight(kg) *</label>
                            <input type="number" name="weight" value="<?=$row->weight?>" class="form-control" required>
                        </div>
                        <div class="form-group">
                            <label>Product Date(dd/mm/yyyy) *</label>
                            <input type="text" name="product_date" value="<?=$row->product_date?>" class="form-control" required>
                        </div>
                        <div class="form-group">
                            <label>Expired Date(dd/mm/yyyy) *</label>
                            <input type="text" name="expired_date" value="<?=$row->expired_date?>" class="form-control" required>
                        </div>
                        <div class="form-group">
                            <label>Technical Data</label>
                            <input type="file" name="image" class="form-control" >
                        </div>
                        <!-- FORM BARCODE -->
                        <div class="form-group">    
                            <label>Barcode</label>
                            <input name="barcode" class="form-control" value="
                                <?php
                                    $angka = rand(1000000,9999999);
                                    $random = rand(0,25);
                                    $random1 = rand(0,25);
                                    $random2 = rand(0,25);
                                    $name = array("A", "B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q",
                                    "R","S","T","U","V","W","X","Y","Z");

                                    echo $name[$random],$name[$random1],$name[$random2],$angka;

                                    $row->barcode   

                                    ?>" readonly>
                        </div>

                        <div class="form-group">
                            <button type="submit" name="<?=$page?>" class="btn btn-success btn-flat">
                                <i class="fa fa-paper-plane"> Save</i>
                            </button>
                            <button type="Reset" class="btn btn-flat"> Reset</button>
                        </div>
                    <!-- </form> -->
                    <?php echo form_close();?>
                </div>
            </div>
        </div>
    </div>
</section>

1 Ответ

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

Загрузить помощник по форме.

function __construct(){
        parent::__construct();
        check_not_login();
        $this->load->model('product_m');
        $this->load->helper('form');
}
...