View Not Found di Laravel: Penyebab dan Solusi

View [nama] not found di Laravel berarti controller atau route memanggil file Blade yang tidak ditemukan pada lokasi yang diharapkan. Jawaban cepatnya: cek nama di return view(...), lokasi file di resources/views, penulisan folder dengan titik, dan huruf besar-kecil nama file.

Error ini biasanya mudah diperbaiki, tetapi sering membuat pemula bingung karena Laravel memakai format nama view seperti produk.index, sementara file aslinya berada di folder resources/views/produk/index.blade.php.

Kapan Masalah Ini Biasanya Muncul?

  • route dibuka lalu muncul View [dashboard] not found
  • controller sudah benar, tetapi halaman tidak tampil
  • file Blade ada, tetapi Laravel tetap bilang tidak ditemukan
  • error hanya muncul di server Linux, bukan di laptop
  • setelah memindahkan file Blade ke folder baru
  • setelah mengganti nama folder atau nama file view

Penyebab Paling Umum

1. Nama View Tidak Cocok dengan Lokasi File

Kode ini:

<?php

return view('produk.index');

mencari file ini:

resources/views/produk/index.blade.php

Kalau file berada di resources/views/products/index.blade.php, Laravel tidak akan menemukannya.

2. Lupa Akhiran .blade.php

File view Laravel biasanya harus bernama:

index.blade.php

Bukan:

index.php
index.html
index.blade

3. Salah Memakai Slash dan Titik

Laravel memakai titik untuk folder view.

<?php

return view('admin.users.index');

Itu berarti:

resources/views/admin/users/index.blade.php

4. Perbedaan Huruf Besar dan Kecil

Di beberapa sistem, Produk/index.blade.php dan produk/index.blade.php bisa dianggap berbeda. Server Linux biasanya case-sensitive.

5. Cache View Masih Menyimpan Kondisi Lama

Setelah rename file atau deploy, cache bisa membuat hasil terlihat tidak sinkron.

Langkah Diagnosis

  1. Salin nama view dari pesan error.
  2. Cari pemanggilan return view('...') yang sesuai.
  3. Ubah titik menjadi folder untuk membayangkan path file.
  4. Cek apakah file benar-benar ada di resources/views.
  5. Pastikan nama folder dan file memakai huruf kecil yang konsisten.
  6. Bersihkan cache view jika baru rename atau deploy.
php artisan view:clear
php artisan optimize:clear
Terjemahkan Nama View ke Path File

view('produk.create') berarti resources/views/produk/create.blade.php. Kalau kamu hafal pola ini, debugging view Laravel jadi jauh lebih cepat.

Langkah Fix

1. Cocokkan return view() dengan File Blade

Controller:

<?php

namespace App\Http\Controllers;

class ProdukController extends Controller
{
    public function index()
    {
        return view('produk.index');
    }
}

File yang harus ada:

resources/views/produk/index.blade.php

2. Buat Folder View Sesuai Resource

Untuk CRUD produk, struktur yang rapi:

resources/views/
└── produk/
    ├── index.blade.php
    ├── create.blade.php
    ├── edit.blade.php
    └── show.blade.php

Lalu controller bisa memakai:

<?php

return view('produk.create');
return view('produk.edit', compact('produk'));
return view('produk.show', compact('produk'));

3. Perbaiki Nama View di Route Closure

Kadang error berasal dari route langsung, bukan controller.

<?php

Route::get('/dashboard', function () {
    return view('dashboard');
});

Kode di atas butuh file:

resources/views/dashboard.blade.php

4. Gunakan Nama Folder Kecil dan Konsisten

Pilih gaya seperti ini:

resources/views/admin/users/index.blade.php

Panggil dengan:

<?php

return view('admin.users.index');

Hindari campuran seperti Admin/Users/Index.blade.php karena bisa aman di laptop tetapi gagal di server.

5. Bersihkan Cache Setelah Rename atau Deploy

php artisan view:clear
php artisan optimize:clear

Di production, perintah ini sering menjadi bagian dari proses deploy.

Contoh Sebelum dan Sesudah

Sebelum

<?php

public function create()
{
    return view('products.create');
}

File yang ada:

resources/views/produk/create.blade.php

Nama view dan folder tidak cocok.

Sesudah

<?php

public function create()
{
    return view('produk.create');
}

Sekarang Laravel mencari file yang memang ada.

Kesalahan yang Sering Terjadi

Produk/index.blade.php bisa membuat error saat deploy ke Linux jika controller memanggil produk.index.

Membuat File di Folder yang Salah

File Blade harus berada di resources/views, bukan di app, routes, atau public.

Mengira view('produk.index') Memanggil Route

view() memanggil file tampilan, bukan nama route. Untuk URL, gunakan route().

Lupa Membersihkan Cache View

Setelah rename file, cache lama bisa membuat error terasa tidak masuk akal.

Pencegahan

  1. Samakan nama resource, controller, dan folder view.
  2. Pakai huruf kecil untuk folder view.
  3. Buat view segera setelah membuat method create, edit, show, atau index.
  4. Gunakan struktur folder yang sama untuk setiap CRUD.
  5. Bersihkan cache view setelah deploy atau rename file.

Bacaan Terkait

FAQ

Kenapa file ada tetapi Laravel tetap bilang view not found?

Biasanya nama folder atau file tidak sama persis dengan nama di view(...), termasuk huruf besar-kecil. Bisa juga cache view belum dibersihkan.

Apakah view harus selalu berada di resources/views?

Untuk penggunaan normal, iya. Laravel mencari Blade template dari folder resources/views.

Apa arti view('admin.users.index')?

Itu berarti Laravel mencari file resources/views/admin/users/index.blade.php.

Kapan perlu menjalankan php artisan view:clear?

Jalankan setelah rename file Blade, deploy, atau saat error view tidak sesuai dengan kondisi file terbaru.