Tutorial Lengkap CRUD Codeigniter 4 dan React js #2 Create Data

codeigniter 4 React js

Create data Codeigniter 4 dan React js Setelah sebelumnya kita mempersiapan project penggabungan codeigniter 4 dengan react js selesai.  Sekarang kita akan coba menambah data ke dalam database. Disini kita akan membuat aplikasi quotes yaitu aplikasi berbagi status.

codeigniter 4 react js create data
codeigniter 4 react js create data

Pembuatan  rest api codeigniter 4 create data

Langkah 1 : Membuat database dan setting env

Baik langsung saja karena kita akan berkenalan dengan database silahkan teman-teman buat dahulu nama databasenya. Lalu ubah nama file env di root folder menjadi .env atau bisa buat file bare agar file env asli tidak terhapus. Lalu setting bagian database .env

database.default.hostname = localhost
database.default.database = ci4
database.default.username = root
database.default.password = 
database.default.DBDriver = MySQLi

Penjelasan!

Disini saya membuat database bernama ci4 dan saya menggunakan xmpp window 10 jadi untuk passwordnya saya kosongkan. Teman-teman sesuaikan saja.

Langkah 2 : Membuat tabel quotes dengan php spark codeigniter 4

Buka terminal line masukan perintah:

php spark migrate:create quotes

Baik jika teman-teman mau buat aplikasi lain bisa di sesuaikan tabelnya saja. Selanjutnya akan terbentuk file migrationnya. silahkan buka file app/Config/Database/Migration

Buka file .php yang ujungnya ada _quotes. Misalnya file 2020-06-21-041849_quotes.php

Lalu  masukan kode berikut:

<?php

namespace App\Database\Migrations;

use CodeIgniter\Database\Migration;

class Quotes extends Migration
{
	public function up()
	{
		$this->forge->addField([
			'quote_id'          => [
				'type'           => 'INT',
				'constraint'     => 5,
				'unsigned'       => TRUE,
				'auto_increment' => TRUE
			],
			'quotes'       => [
				'type'           => 'VARCHAR',
				'constraint'     => '100',
			],
		]);
		$this->forge->addKey('quote_id', TRUE);
		$this->forge->createTable('quotes');
	}

	//--------------------------------------------------------------------

	public function down()
	{
		$this->forge->dropTable('quotes');
	}
}

Disini saya hanya membuat 2 kolom yaitu quote_id untuk primary key yang auto increment dan kolom quotes type varchar.

Baik jika dirasa cukup tabelnya teman-teman bisa jalan perintah berikut di terminal line untuk menjalankan file migrationnya:

php spark migrate

Maka akan terbentuk tabel baru teman-teman bisa pastikan dengan phpmyadmin. Atau jika belum terbiasa membuat tabel dengan migration bisa buat manual saja pakai phpmyadminnya.

Langkah 3 : Membuat routes rest api codeigniter 4

Langsung saja buka filenya di app/Config/Routes.php tambah kode berikut

$routes->resource('quotes');

Penjelasnnya!

kode routes satu baris tersebut sudah mencakup seluruh kebutuhan crud untuk rest api dengan codeigniter 4. Itu setara dengan routes

$routes->get('quotes/new',             'Quotes::new');
$routes->post('quotes',                'Quotes::create');
$routes->get('quotes',                 'Quotes::index');
$routes->get('quotes/(:segment)',      'Quotes::show/$1');
$routes->get('quotes/(:segment)/edit', 'Quotes::edit/$1');
$routes->put('quotes/(:segment)',      'Quotes::update/$1');
$routes->patch('quotes/(:segment)',    'Quotes::update/$1');
$routes->delete('quotes/(:segment)',   'Quotes::delete/$1');

Jadi cukup sebaris yang tadi saja. Ya walaupun kita tidak akan pakai semua langsung kali ini kita hanya butuh

langkah 4 : Membuat controller untuk rest api codeigniter 4

Silahkan langsung buat file baru bernama Quotes.php di app/Controllers/ ingat nama file controllers harus diawali huruf kapital. Isi controllernya sebagai berikut:

<?php

namespace App\Controllers;

use CodeIgniter\RESTful\ResourceController;

class Quotes extends ResourceController
{
    protected $format       = 'json';
    protected $modelName    = 'App\Models\Quotes_model';


    public function create()
    {
        $quote   = $this->request->getPost('quote');
        $data = [
            'quote' => $quote,
        ];

        $simpan = $this->model->insertQuotes($data);
        if ($simpan) {
            $msg = ['message' => 'Created quote successfully'];
            $response = [
                'status' => 200,
                'error' => false,
                'data' => $msg,
            ];
            return $this->respond($response, 200);
        }
    }

}

Penjelasannya!.

Di controller quotes tersebut itu extend ke ResourceController yang merupakai package terbaru dari codeigniter 4 untuk memudahkan dalam pembuatan rest api. Lalu disitu terdapat 1 method  untuk create. Disitu sudah konek ke models tapi modelsnya belum kita buat mari kita buat juga modelsnya.

Langkah 5 : Membuat model rest api codeigniter 4

Buat file baru di app/Models  dengan nama Quotes_model.php

Berikut kodenya:

<?php

namespace App\Models;

use CodeIgniter\Model;

class Quotes_model extends Model
{

    protected $table = 'quotes';


    public function insertQuotes($data)
    {
        return $this->db->table($this->table)->insert($data);
    }




}

 

Baik sampai sini kita sudah berhasil membuat api create data atau tambah data menggunakan codeigniter 4. Selanjutnya kita akan pakai api tersebut dengan react js.

Tambah data atau create data react js include codeigniter 4

Langkah 1 : Persiapan views codeigniter

Baik disini kita akan pakai boostrap untuk templatenya jadi silahkan masukan kode ke view codigeniternya .Karena saya belum mengubah view deafultnya jadi saya mengubah viewnya di file app/Views/welcome_message.php

<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<title>Welcome to CodeIgniter 4 + React.js!</title>
	<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
	<style>
		.navbar {
			margin-bottom: 20px;
		}
	</style>
</head>

<body>
	<!-- from react -->
	<div id="app"></div>
	<!-- end from react -->
	<script src="/dist/main.js" charset="utf-8"></script>


</body>

</html>

Langkah 2 : Membuat component react js

Kalian bisa simpan di folder react nya buat saja folder baru bernama src yang didalamanya ada folder components

Component header

import React, { Component } from "react";

export default class Header extends Component {
  render() {
    return (
      <nav class="navbar navbar-expand-lg navbar-light bg-light">
        <div class="container">
          <a class="navbar-brand" href="#">
            CI4&react
          </a>
          <button
            class="navbar-toggler"
            type="button"
            data-toggle="collapse"
            data-target="#navbarNav"
            aria-controls="navbarNav"
            aria-expanded="false"
            aria-label="Toggle navigation"
          >
            <span class="navbar-toggler-icon"></span>
          </button>
          <div class="collapse navbar-collapse" id="navbarNav">
            <ul class="navbar-nav">
              <li class="nav-item active">
                <a class="nav-link" href="#">
                  Home <span class="sr-only">(current)</span>
                </a>
              </li>
            </ul>
          </div>
        </div>
      </nav>
    );
  }
}

component home

import React, { Component } from "react";

export default class Home extends Component {
  constructor(props) {
    super(props);
    this.state = {
      quotes: "",
    };
    this.onChange = this.onChange.bind(this);
    this.handleSubmit = this.handleSubmit.bind(this);
  }

  onChange(event) {
    this.setState({ quotes: event.target.value });
  }

  handleSubmit(event) {
    fetch("http://localhost:8080/quotes/create", {
      method: "post",
      headers: {
        Accept: "application/json",
        "Content-Type": "application/x-www-form-urlencoded",
      },
      body: `quote=${this.state.quotes}`,
    })
      .then((respon) => respon.json())
      .then((ra) => {
        if ((ra.status = +200)) {
          alert("Data saved");
        } else {
          alert("Data don't saved");
        }
      });

    event.preventDefault();
  }

  render() {
    return (
      <div class="container">
        <div class="row">
          <div class="col">
            <div class="d-flex justify-content-center">
              <form onSubmit={this.handleSubmit}>
                <label>
                  <input
                    type="text"
                    name="name"
                    class="form-controll"
                    value={this.state.quotes}
                    onChange={this.onChange}
                  />
                </label>
                <input
                  class="btn btn-primary btn-sm"
                  type="submit"
                  value="Add Quotes"
                />
              </form>
            </div>
          </div>
        </div>
      </div>
    );
  }
}

Lalu load semua components di app.js

import React, { Component } from "react";
import ReactDOM from "react-dom";
import Header from "./src/components/Header";
import Home from "./src/components/Home";

export default class App extends Component {
  render() {
    return (
      <div className="App">
        <Header />
        <Home />
      </div>
    );
  }
}

ReactDOM.render(<App />, document.getElementById("app"));

Baik buat teman teman yang bingung tentang susunan foldernya

struktur folder codeigniter 4 dengan react js

Penjelasanya!

Saya mengubah path react dari tutorial sebelunya menjadi folder react untuk mengubahnya kalian bisa ubah di file webpack.config.js dibagian entry. Lalu didalam folder reactnya saya buat file app.js yang sama seperti tutorial sebelumnya dan didalamnya saya membuat folder src/components 

Jangan lupa jika kalian mengubah file react js nya kalian harus menjalankan kode berikut di terminal line

webpack --watch

itu akan membaca setiap perubahan file react js nya. Baik sekian dulu semoga paham terima kasih.


Related Articles