membuat validasi file upload pada OOP

permisi agan-agan ane mau tanya seputar validasi upload file di oop. berikut kodenya


if(Input::get('submit')) {

    $files = $user->upload('file');

    $validation = new Validation();

    $validation = $validation->check(array(
      'title'   => array(
                          'required' => true,
                          'min'      => '5',
                          'max'      => '100'
                        ),
      'desc'    => array('required' => true),
      // 'file'    => array(
      //                    'required'  => true,
      //                    'image/type'     => 'jpeg'
      //                   )
    ));

  /* if( $files['error'] == 0){
      if( $files['size'] < 1000000){
        if($files['type'] == 'image/jpg'){
          echo "masuk";
        }else{
          echo "formatnya harus jpg";
        }
      }else{
        echo "Ukuran file kebesaran, maksimal 1Mb";
      }
    }else{
      echo "Gagal upload file image";
    }
   */

    if($validation->passed()){
      $user->add_data(array(
        'title'   => Input::get('title'),
        'desc'    => Input::get('desc'),
        'file'  => Input::get('file')
      ));
    }else{
      $errors = $validation->errors();
    }

  }

jadi ane mau numpuk validasinya khusus dikelas validasinya. berikut kodenya


class Validation{

  private $_passed = false,
          $_errors = array();

  public function check($fields=array())
  {
    foreach ($fields as $items => $item) {
      foreach ($item as $rule => $rule_value) {
        switch ($rule) {
          case 'required':
            if( trim( Input::get($items)) == false && $rule_value == true ){
              $this->addError("* $items wajib diisi");
            }
            break;

          case 'min':
            if(strlen(Input::get($items)) < $rule_value){
              $this->addError("* $items minimal $rule_value karakter");
            }
            break;

          case 'max':
            if( strlen( Input::get($items)) > $rule_value){
              $this->addError("* $items maksimal $rule_value karakter");
            }
            break;
          case 'match':
            if( Input::get($items) != $rule_value ){
              $this->addError("* $items harus sama dengan $rule_value");
            }
            break;
          default:
            # code...
            break;
        }
      }
    }

terimakasih

avatar BroGoeh
@BroGoeh

121 Kontribusi 47 Poin

Diperbarui 6 tahun yang lalu

1 Jawaban:

Jawaban Terpilih

Validasi untuk photos... kalo saya bikinnya begini...

public function checkPhotos($items = array())
    {
      foreach ($items as $item => $rules)
      {
        foreach ($rules as $rule => $rule_value)
        {
          $this->item=explode('_', $item);
          $valueItem=implode(' ',$this->item);
          if(!empty(input::gpFiles($item,'type'))){
            $typeFile=explode('/',input::gpFiles($item,'type'));
          }else{$typeFile=[0,1];}
          // print_r($typeFile);
          // die();

          switch ($rule) {
            case 'error':
              if(Input::gpFiles($item,'error')>$rule_value)
              {
                $this->addError("Error ".ucfirst($valueItem));
              }
              break;
            case 'required':
              if(Input::gpFiles($item,'name')==null&&$rule_value==true)
              {
                $this->addError("Tidak ada file ".ucfirst($valueItem)." yang diUpload!!!");
              }
              break;
            case 'type':
              if(input::gpFiles($item,'type')!==$rule_value.'/'.$typeFile[1])
              {
                $this->addError("File yang anda upload bukan merupakan file ".ucfirst($valueItem));
              }
              break;
            case 'size':
              if(input::gpFiles($item,'size')>=$rule_value)
              {
                $this->addError("File ".ucfirst($valueItem)." berkapasitas lebih dari ".$rule_value." bytes");
              }
              break;

            default:
              break;
          }

        } // Penutup foreach kedua
      } // Penutup foreach pertama

      if(empty($this->_errors))
      {
        $this->_passed=true;
      }

      return $this;

    } // Penutup fungsi checkPhotos

pada input tambahkan fungsi gpFiles....

public static function gpFiles($input, $nama)
    {
      return $_FILES[$input][$nama];
    }

penggunaan...

// 1. Memanggil Objek Validasi
        $validation=new validation();

        // 2. Metode Check
        $validation=$validation->checkPhotos(array(
          'photos'          =>  array(
                                      'error'   => 0,
                                      'required'=> true,
                                      'type'    => 'image',
                                      'size'    => 7092005
                                      // 'size'    => 792005
                                    )
        ));

avatar datrosumendong
@datrosumendong

201 Kontribusi 38 Poin

Dipost 6 tahun yang lalu

Login untuk ikut Jawaban