News

Loading...

Community Links

Laravel Jobs

Latest News

Loading...

Latest Partners

Loading...

Partners

Loading...

Tutorial Laravel File Upload: Cara Mengupload dan Menyimpan File dengan Aman




Laravel menyediakan filesystem abstraction yang powerful untuk menghandle file uploads dengan mudah dan aman. Tutorial ini akan membahas lengkap cara mengupload file menggunakan Laravel Storage, validasi file, dan menyimpannya dengan benar.

Laravel Storage terletak di storage/app dan menyediakan berbagai driver seperti local, s3, ftp, sftp, dan rackspace. Untuk development, driver local sudah cukup. Untuk production, driver s3 sangat direkomendasikan karena lebih reli

able dan scalable.

Untuk membuat form upload, gunakan enctype="multipart/form-data" pada tag form. Contoh form sederhana adalah

. Tanpa enctype ini, file tidak akan terkirim ke server dengan benar.

Di controller, file yang diupload dapat diakses melalui $request->file('nama_field') atau $request->nama_field. Metode isValid() memastikan file terupload dengan benar. Untuk mendapatkan original filename, gunakan getClientOriginalName(). Untuk extension, gunakan getClientOriginalExtension().

Validasi file upload sangat penting untuk keamanan. Gunakan Laravel validation rules seperti required, file, mimes dengan daftar extension yang diperbolehkan, max untuk size dalam kilobytes. Contohnya adalah 'document' => 'required|file|mimes:pdf,doc,docx|max:2048' yang berarti file wajib ada, harus file, hanya pdf/doc/docx, maksimal 2MB.

Untuk menyimpan file ke local storage, gunakan metode store(). Metode ini menerima path tujuan dan nama file secara opsional. Contoh menyimpan file adalah $request->file('document')->store('documents', 'public'); yang menyimpan file ke storage/app/public/documents dengan nama unik.

Laravel juga menyediakan metode storeAs() untuk kontrol lebih atas nama file. Gunakan $request->file('document')->storeAs('documents', $filename); untuk menyimpan dengan nama spesifik. Untuk generate nama unik, gunakan Str::random() atau UUID.

Untuk mendownload file, gunakan metode download(). Contoh return response adalah return storage::download('documents/filename.pdf', 'nama-file.pdf', ['Content-Disposition' => 'attachment']);. Atau gunakan method route() untuk generate URL download.

Untuk menghapus file, gunakan metode delete(). Contohnya adalah storage::delete('documents/filename.pdf');. Pastikan untuk handle case dimana file tidak ada agar tidak terjadi error.

Untuk menggunakan S3, install package league/flysystem-aws-s3-v3 dengan composer, kemudian konfigurasi credentials di file .env. Setelah itu, Anda dapat menggunakan driver s3 dengan mengganti argument store dari public ke s3.

Image manipulation dapat dilakukan dengan intervention/image package. Install dengan composer require intervention/image, kemudian gunakan ImageManager untuk resize, crop, watermark, dan berbagai operasi图像 lain pada file gambar yang diupload.

UnitTest Attribute and More in Laravel 13.3.0

Laravel 13.3.0: Attribute #[UnitTest] dan Peningkatan Queue

Laravel telah merilis versi 13.3.0 yang membawa beberapa fitur menarik, terutama attribute PHP baru bernama #[UnitTest] yang memungkinkan developer untuk skip framework booting untuk individual test methods. Fitur ini sangat berguna ketika sebagian besar tests dalam sebuah class membutuhkan container namun beberapa test adalah pure unit test yang tidak memerlukan booting framework.

Attribute #[UnitTest] adalah inovasi yang sangat dibutuhkan oleh komunitas testing Laravel. Sebelumnya, semua test dalam TestCase yang extends Laravel's base test case akan secara otomatis melakukan framework booting完整. Hal ini tentu saja memperlambat execution time untuk unit test yang sebenarnya hanya membutuhkan PHP logic sederhana tanpa memerlukan seluruh Laravel framework.

Dengan attribute ini, developer dapat dengan mudah menandai method test tertentu untuk di-skip dari framework booting hanya dengan menambahkan #[UnitTest] attribute di atas method test. Laravel akan mendeteksi attribute ini dan menghindari proses booting framework hanya untuk method test tersebut, sehingga execution time menjadi lebih cepat.

另一个 fitur baru yang menarik dalam rilis ini adalah event BatchStarted baru untuk job batching lifecycle monitoring. Event baru ini akan di-trigger ketika job pertama dalam sebuah batch diproses, baik job tersebut berhasil atau gagal. Fitur ini melengkapi event-event existing untuk job batching dan memberikan developer visibilitas lebih baik terhadap proses batch job.

Laravel 13.3.0 juga menambahkan memory usage reporting dalam verbose output dari queue worker. Dengan fitur ini, developer dapat dengan mudah memantau memory usage dari queue worker mereka saat running dalam mode verbose. Informasi ini sangat berguna untuk optimize performa aplikasi yang menggunakan queue secara intensif.

Selain itu, rilis ini juga memperkenalkan variadic support untuk model attributes seperti #[Fillable] dan #[Hidden]. Sebelumnya, developer harus mendefinisikan attribute ini satu per satu dalam array. Dengan variadic support, developer dapat mendefinisikan multiple attribute dalam satu declaration, membuat kode menjadi lebih clean dan mudah dibaca.

Tidak ada breaking changes yang diharapkan untuk aplikasi pada umumnya. Tim Laravel menyediakan changelog lengkap untuk detail lebih lanjut, termasuk official changelog dan full comparison dengan versi sebelumnya. Developer dapat melihat GitHub release untuk melihat semua perubahan yang telah dilakukan.

Membuat Project Laravel 10


Membuat Project Laravel 10

        Halo teman-teman. Selamat datang di Laravel Indonesia, pada artikel ini kita semua akan belajar membuat sebuah Project Laravel. Mari kita mulai.


Membuat Project Baru Laravel

Pastikan teman-teman sudah menginstall Composer.

Saya anggap teman-teman sudah menginstall Composer, maka kita dapat melanjutkan ke proses pembuatan file Project Laravel.


Silahkan buka composer lalu masuk kedalam folder dimana teman-teman akan membuat projectnya dan jalankan perintah dibawah ini.


Perintah di atas akan membuat project Laravel baru dan pastikan teman-teman harus terhubung dengan internet, karena semua data laravel akan di unduh secara online.


Menjalankan Project Laravel

Setelah proses instalasi selesai, kita bisa coba menjalankan Project Laravel kita. Silahkan jalankan perintah dibawah ini untuk masuk ke folder project.


Perintah "cd" digunakan untuk masuk kedalam folder Project Laravel kita. Dan jalankan perintah dibawah.



Perintah "php artisan serve" digunakan untuk menjalankan Project.

Jika sudah di jalankan silahkan buka browser teman-teman dan buka alamat berikut :


Jika teman-teman sudah membuka alamat tersebut maka akan melihat tampilan seperti dibawah.


Selamat. Teman-teman telah berhasil membuat Project baru di Laravel


 



Aplikasi Contoh cara membuat CRUD dengan Laravel


Membangun Aplikasi CRUD dengan Laravel


Dalam pengembangan web, operasi CRUD (Create, Read, Update, Delete) adalah salah satu yang paling umum. Laravel, dengan kekuatan dan kemudahan penggunaannya, adalah pilihan yang luar biasa untuk membangun aplikasi CRUD. Artikel ini akan membimbing Anda langkah demi langkah dalam pembuatan aplikasi sederhana dengan fungsi CRUD menggunakan Laravel.

Langkah 1: Persiapan


Sebelum kita mulai, pastikan Anda sudah menginstal Laravel dan memiliki proyek yang ada. Jika belum, ikuti langkah-langkah di artikel sebelumnya tentang "Memulai dengan Laravel: Panduan Pemula."

Langkah 2: Membuat Model, Migrasi, dan Controller


Dalam Laravel, model merepresentasikan tabel di database kita, migrasi digunakan untuk membuat tabel tersebut, dan controller mengendalikan logika bisnis kita. Untuk membuatnya, jalankan perintah berikut di terminal:

shell
php artisan make:model NamaModel -m

Gantilah "NamaModel" dengan nama model yang sesuai dengan objek yang akan Anda kelola dalam aplikasi Anda.

Langkah 3: Edit Migrasi


Dalam berkas migrasi yang baru saja dibuat di direktori database/migrations, Anda dapat menentukan skema tabel. Definisikan kolom yang diperlukan untuk objek Anda dalam metode up(). Contohnya:

php
public function up() { Schema::create('namatable', function (Blueprint $table) { $table->id(); $table->string('nama_kolom'); $table->text('deskripsi'); $table->timestamps(); }); }

Setelah itu, jalankan migrasi:

shell
php artisan migrate

Langkah 4: Membuat Controller


Buat controller CRUD Anda dengan perintah:

shell
php artisan make:controller NamaController


Di dalam controller ini, Anda akan menentukan logika CRUD untuk objek Anda.

Langkah 5: Routing


Anda perlu mendefinisikan rute untuk aplikasi CRUD Anda. Buka berkas routes/web.php dan tambahkan rute Anda seperti ini:

php
Route::resource('nama-rute', 'NamaController');


Pastikan Anda mengganti "nama-rute" dengan nama rute yang Anda inginkan.

Langkah 6: Membuat Tampilan


Buat tampilan Anda dalam direktori resources/views. Anda akan memiliki tampilan untuk menampilkan, membuat, mengedit, dan menghapus objek Anda.

Langkah 7: Logika CRUD di Controller

Dalam controller yang telah Anda buat, Anda akan menambahkan metode untuk setiap operasi CRUD (create, read, update, delete) sesuai dengan kebutuhan aplikasi Anda.

Kesimpulan

Dengan mengikuti langkah-langkah di atas, Anda telah berhasil membangun aplikasi CRUD sederhana dengan Laravel. Anda dapat memperluas aplikasi ini sesuai kebutuhan Anda dengan menambahkan validasi, otorisasi, dan fitur lainnya. Laravel memudahkan pengembangan aplikasi web dengan cepat dan efisien, dan ini adalah langkah pertama menuju proyek yang lebih besar dan kompleks. Semoga panduan ini bermanfaat dalam perjalanan Anda sebagai pengembang Laravel. Selamat mengoding!

Laravel Pemula : Instalasi


Memulai dengan Laravel: Panduan Pemula


Laravel adalah salah satu framework PHP yang paling populer dan kuat yang digunakan oleh banyak pengembang web di seluruh dunia. Dikenal dengan sintaks yang jelas dan berbagai fitur canggih, Laravel memudahkan pengembangan aplikasi web secara cepat dan efisien. Jika Anda seorang pemula dalam pengembangan web atau baru mengenal Laravel, artikel ini akan membantu Anda memulai dengan langkah-langkah dasar.


Apa Itu Laravel?


Laravel adalah sebuah framework PHP yang dikembangkan oleh Taylor Otwell. Ini memungkinkan pengembang untuk membangun aplikasi web dengan cepat dengan menyediakan berbagai fitur yang sudah siap pakai. Beberapa fitur utama Laravel termasuk sistem routing yang kuat, ORM (Object-Relational Mapping) yang disebut Eloquent, dan sistem templating Blade yang elegan.


Persiapan Awal


Sebelum Anda dapat memulai pengembangan dengan Laravel, pastikan Anda memiliki lingkungan pengembangan yang sesuai. Anda akan memerlukan:


1. PHP: Pastikan Anda memiliki PHP versi 7.4 atau lebih tinggi diinstal di komputer Anda.


2. Composer: Composer adalah manajer paket PHP yang akan membantu Anda mengelola dependensi proyek Laravel. Unduh dan instal Composer jika Anda belum melakukannya.


3. Laragon, XAMPP, atau Lingkungan Sejenis: Anda memerlukan server web lokal untuk menjalankan aplikasi Laravel. Laragon dan XAMPP adalah beberapa pilihan yang populer.


4. Editor Kode: Pilih editor kode yang Anda sukai, seperti Visual Studio Code, PHPStorm, atau Sublime Text.


Menginstal Laravel


Langkah pertama adalah menginstal Laravel di komputer Anda. Buka terminal atau command prompt, dan jalankan perintah berikut:



composer global require laravel/installer



Setelah instalasi selesai, Anda dapat membuat proyek Laravel baru dengan perintah:



laravel new nama-proyek-anda



Menjalankan Aplikasi Pertama Anda


Proyek Laravel baru Anda siap untuk dijalankan. Masuk ke direktori proyek dengan menggunakan terminal:



cd nama-proyek-anda



Selanjutnya, jalankan server pengembangan Laravel dengan perintah:



php artisan serve



Anda akan melihat pesan bahwa server berjalan di alamat http://localhost:8000. Buka browser Anda dan kunjungi alamat ini. Anda akan melihat halaman selamat datang bawaan Laravel.


Struktur Proyek Laravel


Laravel memiliki struktur direktori yang terorganisir dengan baik. Anda akan menemukan berbagai direktori penting seperti `app`, `routes`, dan `resources`. Direktori `app` berisi logika bisnis Anda, `routes` adalah tempat Anda mendefinisikan rute aplikasi, dan `resources` adalah tempat untuk tampilan dan aset Anda.


Kesimpulan


Ini adalah langkah-langkah dasar untuk memulai dengan Laravel. Framework ini memiliki kurva pembelajaran yang terjangkau, bahkan untuk pemula, dan Anda akan menemukan banyak sumber daya dan komunitas online yang dapat membantu Anda dalam perjalanan pengembangan Anda.


Dalam artikel selanjutnya, kita akan menjelajahi lebih dalam tentang fitur-fitur Laravel yang kuat, seperti routing, penggunaan Eloquent, dan banyak lagi. Tetap semangat dalam perjalanan Anda menjadi seorang pengembang Laravel yang mahir!

Rilis "Spicy Summer" dari Pest


Pada tanggal 20 Maret 2023, kami dengan bangga memperkenalkan Pest 2.0, menandainya sebagai rilis kami yang paling signifikan hingga saat ini, dengan lebih dari 7 juta unduhan pada saat penulisan. Versi ini memamerkan plugin arsitektur yang luar biasa, peningkatan kecepatan 80% dalam pengujian paralel, opsi pembuatan profil, dan banyak fitur lainnya.

Saat kami mendekati musim panas, kami sangat senang mengumumkan rilis kami yang akan datang: rilis "Spicy Summer" yang sangat dinantikan. Rilis ini menghadirkan serangkaian fitur menarik yang akan membuatnya terasa seperti versi utama tanpa benar-benar menjadi versi utama - ini adalah Pest v2.9.0 - jadi ini hanya berjarak "pembaruan komposer" dari Anda. Tanpa penundaan lebih lanjut, mari selami apa yang kami miliki untuk Anda musim panas ini:

 

Pengujian Snapshot Bawaan, untuk menguji keluaran panjang kode Anda dengan mudah

Jelaskan Blok, untuk mengelompokkan tes dan berbagi logika penyiapan dan teardown 

Pengujian Arsitektur ++, pengujian arsitektur yang lebih kuat

Type Coverage Plugin, untuk mengukur persentase kode yang dicakup oleh deklarasi tipe

Plugin Drift, untuk mengonversi tes PHPUnit Anda secara otomatis ke Pest

Pengujian Snapshot Bawaan

Pengujian snapshot adalah teknik pengujian yang memungkinkan Anda untuk menegaskan bahwa output dari suatu fungsi atau metode tidak berubah. Ini cara yang bagus untuk menguji basis kode Anda dan memastikan bahwa kode Anda tidak berubah secara tiba-tiba.

Dan sekarang, kami dengan bangga mengumumkan bahwa Pest akan memiliki dukungan pengujian snapshot bawaan. Sebagai contoh, misalkan titik akhir "kontak" Anda menghasilkan HTML tertentu setiap kali dijalankan. Anda mungkin akan menulis tes seperti ini:

it('has a contact page', function () {
$response = $this->get('/contact');
expect($response)->toMatchSnapshot();
});

Pertama kali Anda menjalankan pengujian ini, ini akan membuat file snapshot - di test/.pest/snapshots - dengan konten respons. Lain kali Anda menjalankan tes, itu akan membandingkan respons dengan file snapshot. Jika responsnya berbeda, pengujian akan gagal. Jika jawabannya sama, tes akan lulus.

Selain itu, nilai ekspektasi yang diberikan tidak harus berupa respons; itu bisa apa saja. Misalnya, Anda dapat memotret array:

$array = /** Fetch array somewhere */;
 
expect($array)->toMatchSnapshot();

Dan tentu saja, Anda dapat "membangun kembali" snapshot kapan saja dengan menggunakan opsi --update-snapshots :

./vendor/bin/pest --update-snapshots

Describe Blocks

Sejak kami merilis Pest, deskripsikan blok telah menjadi salah satu fitur yang paling banyak diminta. Ini adalah dasar untuk kerangka kerja pengujian "fungsional" apa pun, karena memungkinkan Anda untuk mengelompokkan pengujian dan berbagi logika penyiapan dan penghancuran.

beforeEach(fn () => $this->user = User::factory()->create());
 
describe('auth', function () {
beforeEach(fn () => $this->actingAs($this->user));
 
test('cannot login when already logged in', function () {
// ...
});
 
test('can logout', function () {
// ...
});
})->skip(/* Skip the entire describe block */);
 
describe('guest', function () {
test('can login', function () {
// ...
});
 
// ...
});

Architectural Testing++

Pest selalu tentang membuat pengujian lebih menyenangkan. Rilis terakhir, kami memperkenalkan ekspektasi arsitektural, yang memungkinkan Anda menguji arsitektur basis kode Anda. Rilis ini, dengan bangga kami umumkan bahwa Pest meningkatkan ekspektasi arsitektural dengan menambahkan yang baru.

test('controllers')
->expect('App\Http\Controllers')
->toUseStrictTypes()
->toHaveSuffix('Controller') // or toHavePreffix, ...
->toBeReadonly()
->toBeClasses() // or toBeInterfaces, toBeTraits, ...
->classes->not->toBeFinal() // 🌶
->classes->toExtendNothing() // or toExtend(Controller::class),
->classes->toImplementNothing() // or toImplement(ShouldQueue::class),

Type Coverage Plugin

Seperti yang mungkin Anda ketahui, Pest menawarkan flag --coverage yang memungkinkan Anda menghasilkan laporan cakupan yang bagus di terminal. Laporan ini menunjukkan baris kode mana yang dicakup oleh pengujian Anda. Ini adalah cara yang bagus untuk memastikan bahwa pengujian Anda mencakup semua kode Anda.


Selain itu, kami dengan bangga mengumumkan bahwa Pest sekarang akan memiliki dukungan cakupan tipe bawaan. Ini berarti Anda sekarang dapat melihat apakah kode sumber Anda menggunakan "types" di setiap tempat yang memungkinkan. Misalnya, Anda memiliki repositori yang memiliki metode berikut:

public function find($id)
{
return User::find($id);
}

Metode ini tidak memiliki tipe parameter dan tipe pengembalian. Jadi, jika Anda menjalankan pest --type-coverage, Anda akan melihat output berikut dan mengetahui bahwa Anda perlu menambahkan tipe ke metode ini:

...
app/Models\User.php .......................................... 100%
app/Repositories/UserRepository.php .................. pa8, rt8 33%
───────────────────────────────────────────────────────────────────
Total: 91.6 %

In addition, just like regular coverage, you may enforce --min type coverage percentage. For example, if you run --type-coverage --min=100, you will see the following output:

...
app/Models\User.php .......................................................... 100%
app/Repositories/UserRepository.php .................................. pa8, rt8 33%
───────────────────────────────────────────────────────────────────────────────────
Total: 91.6 %
ERROR Type coverage below expected: 91.6%. Minimum: 100.0%

Drift Plugin

Ya, Anda membacanya dengan benar. Kami dengan bangga mengumumkan bahwa Pest sekarang akan memiliki alat seperti pergeseran Laravel yang disebut Drift. Drift akan memungkinkan Anda untuk memutakhirkan tes PHPUnit Anda ke tes Pest dalam hitungan detik.

Jadi, jika Anda memiliki tes seperti ini:

<?php
 
namespace Tests\Unit;
 
use PHPUnit\Framework\TestCase;
 
class ExampleTest extends TestCase
{
public function test_that_true_is_true(): void
{
$this->assertTrue(true);
}
}

Kamu dapat menjalankan ./vendor/bin/pest --drift and Pest akan automatis mengkonversi ke PHPUnit test kamu ke Pest test:

test('true is true', function () {
expect(true)->toBeTrue();
});

Terima kasih sudah membaca tentang fitur baru Pest 2.9!

Most Read

Loading...

Tutorial

Loading...

Packages

Loading...