Welcome Guest, Not a member yet? Register   Sign In
Lost Session Data During File Validation
#1

(This post was last modified: 07-02-2023, 08:34 PM by putrapr.)

Hi! i'm using CI 4.3.6, there was a problem regarding file validation.


View (/komik/create)
Code:
<?= $this->extend('layout/template'); ?>

<?= $this->section('content') ?>
<div class="container">
  <div class="row">
    <div class="col-8">
      <h2 class="my-3">Form Tambah Data Komik</h2>

      <form action="/komik/save" method="post" enctype="multipart/form-data">
        <?= csrf_field(); ?>

        <div class="row mb-3">
          <label for="judul" class="col-sm-2 col-form-label">Judul</label>
          <div class="col-sm-10">
            <input type="text" class="form-control <?= ($validation->hasError('judul')) ? 'is-invalid' : '' ?>" id="judul" name="judul" autofocus value="<?= old('judul') ?>" required>
            <div class="invalid-feedback">
              <?= $validation->getError('judul'); ?>
            </div>
          </div>
        </div>

        <div class="row mb-3">
          <label for="penulis" class="col-sm-2 col-form-label">Penulis</label>
          <div class="col-sm-10">
            <input type="text" class="form-control" id="penulis" name="penulis" value="<?= old('penulis') ?>" required>
          </div>
        </div>

        <div class="row mb-3">
          <label for="penerbit" class="col-sm-2 col-form-label">Penerbit</label>
          <div class="col-sm-10">
            <input type="text" class="form-control" id="penerbit" name="penerbit" value="<?= old('penerbit') ?>" required>
          </div>
        </div>

        <div class="row mb-3">
          <label for="sampul" class="col-sm-2 col-form-label">Sampul</label>
          <div class="col-sm-10">
            <input class="form-control <?= ($validation->hasError('sampul')) ? 'is-invalid' : '' ?>" type="file" id="sampul" name="sampul">
            <div class="invalid-feedback">
              <?= $validation->getError('sampul'); ?>
            </div>
          </div>
        </div>

        <button type="submit" class="btn btn-primary">Tambah Data</button>
      </form>
    </div>
  </div>
</div>
<?= $this->endSection() ?>


Controller (Komik), the relevant part
PHP Code:
<?php

namespace App\Controllers;

use 
App\Models\KomikModel;

class 
Komik extends BaseController 
  protected $komikModel;
  public function __construct() {
    $this->komikModel = new KomikModel();
    
  
}

  public function create() {  
    $validation 
= (isset(session()->validation))? session()->validation : \Config\Services::validation();
    $data = [
      'title' => 'Form Tambah Data Komik',
      'validation' => $validation
    
];
    unset(session()->validation);
    return view('/komik/create'$data);
  }

  public function save() {
    $rules = [
      'judul' => [
        'rules' => 'required|is_unique[komik.judul]',
        'errors' => [
          'required' => 'Judul komik harus diisi',
          'is_unique' => 'Judul komik sudah terdaftar'
        ]
      ], 
      'sampul' => 'uploaded[sampul]'
    ];

    if (!$this->validate($rules)) {      
      session
()->setFlashdata('validation'$this->validator);
      dd(session()->validation);
      return redirect()->to('/komik/create')->withInput();
    }

    // If success, save to database
    return redirect()->to('/komik');
  }

session(); i save in BaseController

Routes, the relevant part
Code:
$routes->get('/komik/create', 'Komik::create');
$routes->post('/komik/save', 'Komik::save');
------------------------------------------------------------------------

If without file validation :
Code:
'sampul' => 'uploaded[sampul]'

application runs smoothly (only text validation), I get the desired error message. 
When I add file input validation, all session lost.

I check session()->validation
Error sentence:
Fatal error: Uncaught Exception: Serialization of 'CodeIgniter\HTTP\Files\UploadedFile' is not allowed in [no active file]:0 Stack trace: #0 [internal function]: session_write_close() #1 {main} thrown in [no active file] on line 0

Can anyone help?
Thank you
Reply




Theme © iAndrew 2016 - Forum software by © MyBB