İlk sayfanız
Bu sayfa temaya yeni bir yönetim sayfası eklemeyi gösterir: görünüm, rota ve menü kaydı.
En kısa örnek
{{-- resources/views/admin/customers/index.blade.php --}}
@extends('layouts.admin.vertical')
@section('title', __('Müşteriler'))
@section('content')
<acun:page-header :title="__('Müşteriler')" />
@endsection
// routes/web.php
Route::view('/customers', 'admin.customers.index')->name('customers.index');
Adresi açın: sayfa menülü panelin içinde görünür, sekme başlığı "Müşteriler" olur. Temada panel rotaları Route::prefix('admin') grubundadır. Rotayı bu grubun içine yazarsanız adres /admin/customers olur.
Adım adım
Örnekte panele bir "Müşteriler" sayfası ekleniyor. Aynı adımlar her yeni sayfa için geçerlidir.
-
Görünümü oluşturun. Panel sayfaları
resources/views/admin/altında durur:{{-- resources/views/admin/customers/index.blade.php --}} @extends('layouts.admin.vertical') @section('title', __('Müşteriler')) @section('content') <section class="mx-auto w-full max-w-7xl space-y-6"> <acun:page-header :title="__('Müşteriler')" :breadcrumbs="[['label' => __('Kayıtlar')], ['label' => __('Müşteriler')]]" /> <acun:card> <acun:empty-state :title="__('Henüz müşteri yok')" :description="__('İlk müşterinizi ekleyerek başlayın.')"> <acun:slot:action><acun:button>{{ __('Yeni müşteri') }}</acun:button></acun:slot:action> </acun:empty-state> </acun:card> </section> @endsection@section('title')sekme başlığını verir.@section('content')düzenin ortasındaki içerik alanına yerleşir. -
Rotayı ekleyin. Sayfa veri göstermiyorsa
Route::viewyeterlidir:// routes/web.php, Route::prefix('admin') grubunun içinde Route::view('/customers', 'admin.customers.index')->name('customers.index');Veritabanından veri gerekiyorsa bir controller yazın. Controller görünümü
view('admin.customers.index', [...])ile döndürür; rotaRoute::get('/customers', CustomerController::class)olur. -
Menüye bir satır ekleyin:
{ "title": "Müşteriler", "icon": "users", "route": "customers.index", "active": "customers.*" }Satırı
resources/menu/main.jsondosyasındakimenudizisine yazın. Sayfa hem menüde hem ⌘K aramasında görünür.activesayesindecustomers.creategibi alt sayfalarda da öğe seçili kalır.
Düzeni değiştirmek
@extends satırındaki düzen adını değiştirin:
| Düzen | Ne zaman |
|---|---|
layouts.admin.vertical |
Solda dikey menü; çoğu sayfa için. |
layouts.admin.horizontal |
Menü üst çubukta. |
layouts.admin.blank |
Menüsüz sayfa: giriş, kayıt, hata ekranları. |
Düzenlerin içeriği ve seçenekleri Düzenler sayfasında.
Livewire sayfası
Sayfa etkileşimliyse (form, canlı arama) onu Livewire bileşeni olarak yazın:
// app/Livewire/Customers/Index.php
namespace App\Livewire\Customers;
use Illuminate\Contracts\View\View;
use Livewire\Attributes\Layout;
use Livewire\Attributes\Title;
use Livewire\Component;
#[Layout('layouts.admin.vertical')]
#[Title('Müşteriler')]
final class Index extends Component
{
public function render(): View
{
return view('admin.customers.index');
}
}
{{-- resources/views/admin/customers/index.blade.php --}}
<section class="mx-auto w-full max-w-7xl space-y-6">
<acun:page-header :title="__('Müşteriler')" />
…
</section>
// routes/web.php
use App\Livewire\Customers\Index as CustomersIndex;
Route::livewire('/customers', CustomersIndex::class)->name('customers.index');
#[Layout] sayfayı düzene yerleştirir. #[Title] sekme başlığının çeviri anahtarıdır; PHP özniteliğinde __() çağrılamadığı için düzen onu çevirir. Livewire görünümünde @extends ve @section yazılmaz. Görünüm tek bir kök öğeyle başlar, örnekte <section>.
Sayfaya özel betik
Yalnızca bu sayfada çalışacak bir JavaScript dosyasını page-scripts yığınına ekleyin:
@push('page-scripts')
@vite('resources/js/pages/customers.js')
@endpush
Düzenler bu yığını sayfanın sonunda basar. Dosyayı Vite girişlerine eklemeyi CSS, JavaScript ve derleme sayfası anlatır.
Yetki
Menü yetki denetimi yapmaz. Yetki gerektiren sayfalarda rotayı kendi ara katmanınızla ya da politikanızla koruyun. Öğeyi menüden gizlemek için Menü sayfasına bakın.
Daha fazlası
- Liste sayfası: sayfayı arama, filtre ve toplu işlemleri olan bir listeye dönüştürün.
- Form penceresi: kayıt ekleme ve düzenleme penceresi.
- Menü: menü dosyasının bütün alanları.
- Düzenler: düzen dosyaları, slot'lar ve prop'lar.