0% found this document useful (0 votes)
33 views7 pages

Crud Ci4

Uploaded by

rollyrifqi08
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
33 views7 pages

Crud Ci4

Uploaded by

rollyrifqi08
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 7

CRUD CODEIGNITER 4

1. Jalankan Xampp
2. Jalankan visual studio code
3. Edit app/Config/Routes.php menjadi seperti ini

<?php

use CodeIgniter\Router\RouteCollection;

/**
* @var RouteCollection $routes
*/
$routes->get('/', 'Home::index');
$routes->get('/about', 'Page::about');
$routes->get('/contact', 'Page::contact');
$routes->get('/faqs', 'Page::faqs');
$routes->get('/news', 'News::index');
$routes->get('/news/(:any)', 'News::viewNews/$1');
$routes->group('admin', function($routes){
$routes->get('news', 'NewsAdmin::index');
$routes->get('news/(:segment)/preview', 'NewsAdmin::preview/$1');
$routes->add('news/new', 'NewsAdmin::create');
$routes->add('news/(:segment)/edit', 'NewsAdmin::edit/$1');
$routes->get('news/(:segment)/delete', 'NewsAdmin::delete/$1');
});

4. Pada bagian app/Controllers/ buat file baru dengan nama NewsAdmin.php untuk coding sebagai berikut

<?php namespace App\Controllers;

use \App\Models\NewsModel;
use CodeIgniter\Exceptions\PageNotFoundException;

class NewsAdmin extends BaseController


{
public function index()
{
$news = new NewsModel();
$data['newses'] = $news->findAll();
echo view('admin_list_news', $data);
}

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

public function preview($id)


{
$news = new NewsModel();
$data['news'] = $news->where('id', $id)->first();
if(!$data['news']){
throw PageNotFoundException::forPageNotFound();
}
echo view('news_detail', $data);
}

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

public function create()


{
// lakukan validasi
$validation = \Config\Services::validation();
$validation->setRules(['title' => 'required']);
$isDataValid = $validation->withRequest($this->request)->run();

// jika data valid, simpan ke database


if($isDataValid){
$news = new NewsModel();
$news->insert([
"title" => $this->request->getPost('title'),
"content" => $this->request->getPost('content'),
"status" => $this->request->getPost('status'),
"slug" => url_title($this->request->getPost('title'), '-', TRUE)
]);
return redirect('admin/news');
}

// tampilkan form create


echo view('admin_create_news');
}

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

public function edit($id)


{
// ambil artikel yang akan diedit
$news = new NewsModel();
$data['news'] = $news->where('id', $id)->first();

// lakukan validasi data artikel


$validation = \Config\Services::validation();
$validation->setRules([
'id' => 'required',
'title' => 'required'
]);
$isDataValid = $validation->withRequest($this->request)->run();
// jika data vlid, maka simpan ke database
if($isDataValid){
$news->update($id, [
"title" => $this->request->getPost('title'),
"content" => $this->request->getPost('content'),
"status" => $this->request->getPost('status')
]);
return redirect('admin/news');
}

// tampilkan form edit


echo view('admin_edit_news', $data);
}

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

public function delete($id){


$news = new NewsModel();
$news->delete($id);
return redirect('admin/news');
}
}

5. Selanjutnya pada app/Models buat file baru dengan nama NewsModel.php untuk coding nya sebagai berikut

<?php

namespace App\Models;

use CodeIgniter\Model;

class NewsModel extends Model


{
protected $table = 'news';
protected $primaryKey = 'id';

protected $useAutoIncrement = true;


protected $allowedFields = ['title', 'content', 'status', 'author', 'slug'];
}

6. Kemudian pada bagian app/Views buat file baru dengan nama news_detail.php untuk coding sebagai berikut

<?= $this->extend('layout/post_layout') ?>

<?= $this->section('content') ?>


<h2 class="h2"><?= $news['title'] ?></h2>
<div class="mb-5">
<span><?= $news['created_at'] ?></span>
</div>
<div><?= $news['content'] ?></div>
<?= $this->endSection() ?>

7. Kemudian pada bagian app/Views buat file baru dengan nama admin_create_news.php untuk coding sebagai
berikut

<?= $this->extend('layout/admin/admin_layout') ?>

<?= $this->section('content') ?>

<form action="" method="post" id="text-editor">


<div class="form-group">
<label for="title">Title</label>
<input type="text" name="title" class="form-control" placeholder="News title"
required>
</div>
<div class="form-group">
<textarea name="content" class="form-control" cols="30" rows="10"
placeholder="Write a great news!"></textarea>
</div>
<div class="form-group">
<button type="submit" name="status" value="published" class="btn btn-
primary">Publish</button>
<button type="submit" name="status" value="draft" class="btn btn-secondary">Save to
Draft</button>
</div>
</form>

<?= $this->endSection() ?>

8. Kemudian pada bagian app/Views buat file baru dengan nama admin_edit_news.php untuk coding sebagai berikut

<?= $this->extend('layout/admin/admin_layout') ?>

<?= $this->section('content') ?>

<form action="" method="post" id="text-editor">


<input type="hidden" name="id" value="<?= $news['id'] ?>" />
<div class="form-group">
<label for="title">Title</label>
<input type="text" name="title" class="form-control"
placeholder="News title" value="<?= $news['title'] ?>" required>
</div>
<div class="form-group">
<textarea name="content"
class="form-control"
cols="30" rows="10"
placeholder="Write a great news!"><?= $news['content'] ?></textarea>
</div>
<div class="form-group">
<button type="submit" name="status" value="published" class="btn btn-
primary">Publish</button>
<button type="submit" name="status" value="draft" class="btn btn-secondary">Save to
Draft</button>
</div>
</form>

<?= $this->endSection() ?>

9. Kemudian pada bagian app/Views buat file baru dengan nama admin_list_news.php untuk coding sebagai berikut

<?= $this->extend('layout/admin/admin_layout') ?>

<?= $this->section('content') ?>

<table class="table">
<thead>
<tr>
<th>#</th>
<th>Title</th>
<th>Status</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php foreach($newses as $news): ?>
<tr>
<td><?= $news['id'] ?></td>
<td>
<strong><?= $news['title'] ?></strong><br>
<small class="text-muted"><?= $news['created_at'] ?></small>
</td>
<td>
<?php if($news['status'] === 'published'): ?>
<small class="text-success"><?= $news['status'] ?></small>
<?php else: ?>
<small class="text-muted"><?= $news['status'] ?></small>
<?php endif ?>
</td>
<td>
<a href="<?= base_url('admin/news/'.$news['id'].'/preview') ?>" class="btn btn-sm
btn-outline-secondary" target="_blank">Preview</a>
<a href="<?= base_url('admin/news/'.$news['id'].'/edit') ?>" class="btn btn-sm btn-
outline-secondary">Edit</a>
<a href="#" data-href="<?= base_url('admin/news/'.$news['id'].'/delete') ?>"
onclick="confirmToDelete(this)" class="btn btn-sm btn-outline-danger">Delete</a>
</td>
</tr>
<?php endforeach ?>
</tbody>
</table>

<div id="confirm-dialog" class="modal" tabindex="-1" role="dialog">


<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-body">
<h2 class="h2">Are you sure?</h2>
<p>The data will be deleted and lost forever</p>
</div>
<div class="modal-footer">
<a href="#" role="button" id="delete-button" class="btn btn-danger">Delete</a>
<button type="button" class="btn btn-secondary" data-
dismiss="modal">Cancel</button>
</div>
</div>
</div>
</div>

<script>
function confirmToDelete(el){
$("#delete-button").attr("href", el.dataset.href);
$("#confirm-dialog").modal('show');
}
</script>

<?= $this->endSection() ?>

10. Kemudian pada bagian app/Views/layout buat folder baru dengan nama admin
11. Lalu buka bagian app/Views/layout/admin buat file baru dengan nama admin_layout.php masukkan codeing
berikut

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

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Admin Berita Codeigniter</title>

<!-- Bootstrap CSS -->


<link rel="stylesheet" href="<?= base_url('css/bootstrap.min.css') ?>" />
</head>

<body>

<?= $this->include('layout/admin/navbar') ?>


<div class="container my-5">
<div class="row">
<div class="col-md-12">
<?= $this->renderSection('content') ?>
</div>
</div>
</div>

<!-- Custom scripts for all pages-->


<script src="<?= base_url('js/jquery.min.js') ?>"></script>
<script src="<?= base_url('js/bootstrap.min.js') ?>"></script>

</body>

</html>

12. Lalu buka bagian app/Views/layout/admin buat file baru dengan nama navbar.php masukkan codeing berikut

<nav class="navbar navbar-expand-lg navbar-dark bg-dark">


<div class="container">
<a class="navbar-brand" href="<?= base_url('admin') ?>">Admin Home</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 justify-content-between" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" href="<?= base_url('admin/news') ?>">News</a>
</li>
</ul>
<ul class="navbar-nav">
<li class="nav-item">
<a href="<?= base_url('admin/news/new') ?>" class="btn btn-primary mr-
3">New Post</a>
</li>
<li class="nav-item">
<a class="nav-link" href="<?= base_url('admin/setting') ?>">Setting</a>
</li>
<li class="nav-item">
<a class="nav-link" href="<?= base_url('auth/logout') ?>">Logout</a>
</li>
</ul>
</div>
</div>
</nav>

You might also like