• Tidak ada hasil yang ditemukan

Menampilkan link pagination di view ~4

Method simplePaginate() dan paginate() berfungsi untuk mengambil data dari database sesuai jumlah item per halaman yang kita inginkan. Tugas selanjutnya bagi developer adalah untuk menampilkan link / tombol pagination di view agar pengguna aplikasi dapat melakukan navigasi ke halaman tertentu.

Untuk menampilkan link / tombol pagination pada sebuah view tentu langkah pertama yang harus kita lakukan adalah dengan menggunakan method simplePaginate() / paginate() di controller yang menggunakan view tersebut.

Bila kita perhatikan contoh kode sebelumnya yaitu pada ProductController.php, kita melakukan paginate pada model Product, dan melemparkan ke view “products.list” yang berarti file view tersebut terletak pada resources/views/products/list.blade.php. Data tersebut dilempar sebagai variabel

$products, lihat bagian [“products” => \App\Product::paginate(25)].

Berarti, kini pada file view tersedia variabel $products yang berisi 25 data products pertama jika misalnya ada 300 data di database. Maka kita bisa menampilkan products tersebut dengan Blade melalui looping.

Selanjutnya, kita ingin menampilkan tombol pagination di bawah daftar products, maka kita gunakan sebuah method pagination yaitu links() seperti ini

File resources/views/products/list.blade.php

1 2 3 4 5 6 7

1

1 2 3 4 5 6 7 8 9 10 11

<ul>

@foreach($products as $p) <li>{{$p->name}}</li>

@endforeach

</ul>

{{$products->links()}}

Dengan begitu maka akan muncul tombol markup pagination yang sudah mendukung Bootstrap CSS Framework secara otomatis.

Dan pembahasan mengenai cara menampilkan link di View ini menjadi penutup bab Eloquent dan Model sekaligus pengantar bagi bab berikutnya yaitu View.

Latihan Praktik ~2

Kita sudah sampai pada penghujung bab ini di mana kita akan kembali berlatih dengan materi yang sudah kita pelajari. Praktik ini akan melanjutkan praktik sebelumnya.

Seperti yang telah kita lakukan di praktik sebelumnya, kita sudah membuat tabel categories dan mengisinya dengan 10 data kategori. Kini, saatnya kita mencoba untuk melakukan query terhadap data-data tersebut ya.

Latihan:

1. Tampilkan semua kategori pada route http://toko-online.test/latihan/kategori/all

2. Search kategori berdasarkan name http://toko-online.test/latihan/kategori/search?

name=buku

3. Hapus data kategori dengan ID tertentu di

http://toko-online.test/latihan/kategori/3/delete lalu kembali lihat kategori/all memastikan tidak ada lagi kategori yang baru dihapus

4. Restore data yang telah dihapus http://toko-online.test/latihan/kategori/3/restore dan lihat kembali kategori/all

5. Force delete / hapus permanen data kategori

http://toko-online.test/latihan/kategori/3/permanent-delete1 Langkah-langkah:

1. Buat controller bernama CategoryController dengan action index, search, delete, dan restore

php artisan make:controller CategoryController

Lalu buka app/Http/Controllers/CategoryController.php dan buat action controllernya. Seperti ini:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class CategoryController extends Controller {

/**

* Action untuk menampilkan semua kategori */

12

* Action untuk mencari kategori berdasarkan nama */

public function search(Request $request){

return "TODO: menampilkan hasil search berdasarkan nama kategori";

return "TODO: menghapus (soft delete) kategori berdasarkan ID";

}

/**

* Action untuk merestore kategori yang telah didelete */

public function restore($id){

return "TODO: merestore kategori yang statusnya dihapus (soft delete)";

}

/**

* Action untuk permanent delete dari database (tidak bisa direstore) */

public function permanentDelete($id){

return "TODO: hapus secara permanent sebuah kategori dari DB.

Tidak bisa direstore";

} }

2. Buat route untuk masing-masing fitur latihan;

buka routes/web.php lalu tambahkan kode ini:

Route::group(["prefix" => "latihan"], function(){

Route::get("/kategori/all", "CategoryController@index");

Route::get("/kategori/search", "CategoryController@search");

Route::get("/kategori/{id}/delete", "CategoryController@delete");

Route::get("/kategori/{id}/restore", "CategoryController@restore");

Route::get("/kategori/{id}/permanent-delete",

"CategoryController@permanentDelete");

});

1

Silahkan dicoba untuk mengakses masing-masing route untuk menguji apakah sudah berhasil. Harusnya masing-masing route akan menampilkan pesan string yang kita return dari masing-masing action controller.

Definisi route di atas menghasilkan route-route berikut ini:

http://toko-online.test/latihan/kategori/all http://toko-online.test/latihan/kategori/search http://toko-online.test/latihan/kategori/1/delete http://toko-online.test/latihan/kategori/1/restore

http://toko-online.test/latihan/kategori/1/permanent-delete

3. Siapkan soft delete pada model Category; Buka file app/Category.php dan kita tambahkan fitur softDeletes seperti ini kodenya:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

use Illuminate\Database\Eloquent\SoftDeletes;

class Category extends Model {

use SoftDeletes;

}

4. Koding masing-masing controller action.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class CategoryController extends Controller {

* Action untuk mencari kategori berdasarkan nama */

public function search(Request $request){

// dapatkan keyword dari querystring ?name=keyword $keyword = $request->get("name");

// cari kategori where name == keyword dari querystring

return \App\Category::where("name", "LIKE", "%$keyword%")->get();

26

* Action untuk merestore kategori yang telah didelete */

public function restore($id){

$category = \App\Category::withTrashed()->findOrFail($id);

if(!$category->trashed()){

return "Kategori tidak perlu direstore";

}

return "Kategori $category->name berhasil direstore";

}

/**

* Action untuk permanent delete dari database (tidak bisa direstore) */

public function permanentDelete($id){

$category = \App\Category::withTrashed()->findOrFail($id);

$category->forceDelete();

return "Kategori $category->name berhasil dihapus permanent.

Tidak bisa direstore";

} }

Kesimpulan ~2

Kita telah belajar mengenai model dan seperti apa konvensinya. Meskipun memiliki konvensi tetapi model di Laravel sangat fleksibel karena kita bisa mengubah perilakunya dengan properti-properti khusus seperti mengubah nama tabel default, mengganti koneksi mass-assignment dan menggunakan soft delete.

Kita juga belajar mengenai mass-assignment, kenapa diperlukan dan bagaimana mengizinkan operasi ini pada field tertentu atau sebaliknya melindungi field tertentu.

Setelah itu kita belajar tentang Eloquent untuk berinteraksi dengan database tanpa menuliskan sintaks SQL.

Kita belajar query, insert, update dan delete dengan Eloquent ini.

Kemudian di akhir bab kita melakukan latihan praktik terhadap materi yang baru saja kita pelajari di bab ini.

Namun ternyata kita belum menggunakan View sama sekali, karena di latihan kita hanya menghasilkan data-data dalam format JSON.

Oleh karena itu bab selanjutnya kita akan belajar tentang View agar aplikasi kita memiliki interface yang cantik dan menarik bagi user. Tertarik? Siap? Yuk kita lanjutkan belajarnya!

1 2 3

1 2 3

View ~1

Intro ~2

View merupakan tempat bagi kita untuk meletakkan kode-kode HTML. Kita tidak akan menggunakan lagi file .html ya. Tapi kita tidak hanya menggunakan HTML karena kita perlu menghandle tampilan dengan lebih canggih. Menampilkan data yang diberikan oleh controller. Untuk itu kita akan menggunakan templating engine, yaitu Blade.

Blade merupakan templating engine bawaan Laravel. Berguna untuk mempermudah dalam menulis kode tampilan. Dan juga memberikan fitur tambahan untuk memanipulasi data di view yang dilempar dari controller. Apa saja fitur yang ditawarkan oleh Blade?