erenmustafaozdal / laravel-page-module
laravel 5.1 page management module package
Requires
- php: >=5.5.9
- erenmustafaozdal/laravel-modules-base: ~0.1
- illuminate/support: ~5
- mews/purifier: ~2.0
This package is not auto-updated.
Last update: 2024-11-18 07:56:09 UTC
README
Laravel Page Module, Laravel 5.1 projelerinde sayfa yönetimi işlemlerini kapsayan bir modül paketidir. Bu paket kullanıcı arayüzü (views) hariç, arka plandaki bütün işlemleri barındırmaktadır. İstersen görünümleri kapsayan Laravel Modules Core paketini kullanarak, modüle tam kapsamıyla sahip olabilirsin.
Kurulum
Composer ile yüklemek için aşağıdaki kodu kullanabilirsin.
composer require erenmustafaozdal/laravel-page-module
Ya da composer.json
dosyana, aşağıdaki gibi ekleme yapıp, paketleri güncelleyebilirsin.
{ "require": { "erenmustafaozdal/laravel-page-module": "~0.1" } }
$ composer update
Bu işlem bittikten sonra, service provider'i projenin config/app.php
dosyasına eklemelisin.
ErenMustafaOzdal\LaravelPageModule\LaravelPageModuleServiceProvider::class,
❗ Eğer Laravel Modules Core paketini kullanacaksan, o paketin service provider dosyasını üstte tanımlamalısın.
Dosyaların Yayınlanması
Laravel Page Module paketinin dosyalarını aşağıdaki kodla yayınlamalısın.
php artisan vendor:publish --provider="ErenMustafaOzdal\LaravelPageModule\LaravelPageModuleServiceProvider"
Migration
Dosyaları yayınladıktan sonra migration işlemi yapmalısın.
php artisan migrate
❗ Paket editör aracılığıyla veri tabanına kayıt yapmaktadır. Tahmin edebileceğin gibi Laravel Blade şablonunda
{{ }}
ile html etiketler ekranda metin olarak işlenecektir. Laravel'in{!! !!}
şeklindeki kullanımı ise; güvenilir olmayan bir kişinin veri kaydetmesi sonucu XSS açığı oluşturabilir. Bunun önüne geçmek için Laravel Page Module mewebstudio/Purifier paketini kullanıyor. Sıradaki işlem olarak Purifier paketine yazma izni vermen gerekiyor.
Önce bu paketin dosyalarını yayınlayalım
php artisan vendor:publish --provider="Mews\Purifier\PurifierServiceProvider"
Daha sonra da izni verelim.
sudo chmod 777 vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Serializer
Son olarak App\PageCategory
ve App\Page
modellerini uygun bir şekilde tanımlamalısın. Bunun için App\PageCategory
modelini ErenMustafaOzdal\LaravelPageModule\PageCategory
modelinden, App\Page
modelini ErenMustafaOzdal\LaravelPageModule\Page
modelinden genişletmelisin.
namespace App; use ErenMustafaOzdal\LaravelPageModule\PageCategory as EMOPageCategory; class PageCategory extends EMOPageCategory { // }
namespace App; use ErenMustafaOzdal\LaravelPageModule\Page as EMOPage; class Page extends EMOPage { // }
Kullanım
Kurulum tamamlandığında; Laravel Modules Core paketini de dahil ettiysen, tasarım dahil olarak kullanıma hazır olacaktır.
❗ metinler yanlış görünüyorsa, Laravel Modules Core paketinin İngilizce dil dosyaları hazır olmadığı içindir. Bu sebeple projenin
config/app.php
dosyasında'locale' => 'tr'
tanımlaması yapmalısın.
Ayar Dosyası
Genel Ayarlar
Paketin içinde kullanılan genel ayarlar. Ayar dosyası içinde kök alanda bulunan ayarlar.
URL Ayarları
Tarayıcının adres çubuğunda görünecek adreslerin tanımlandığı ayarlar. Ayar dosyasının url
alanında bulunan ayarlardır.
Örneğin:
activate_route
ayarı ile aktivasyon sayfası adresiaccount-activate
şeklinde tanımlanmıştır. Bu şekilde adres çubuğunda şuna benzer bir görünüm olacaktır:www.siteadi.com/account-activate/{id}/{code}
Controller Ayarları
Bazı metotlarda değişiklik yapmak isteyebilirsin. Burada yapacağın tanımlamalarda kendi Controller
sınıfını tanımlayıp, Laravel Page Module'ün ilgili controller'ından genişletirsen, istediğin metotların üzerine yazabilirsin. Ayar dosyasının controller
alanında bulunan ayarlardır.
Rota Açıp/Kapatma Ayarları
Projeye göre bazı rotalar işe yaramayabilir. Bunların açık olmasını istemeyebilirsin. Aşağıdaki ayarları kullanarak istediğin rotaları açıp kapatabilirsin. Ayar dosyasının routes
alanında bulunan ayarlardır. Bütün rotaların başlangıçta true
değerine sahiptir ve açıktır.
| Ayar | Açıklama |
|---|---|---|
| admin.page_category | Sayfa Kategorisi yönetim paneli resource
rotaları |
| admin.page | Sayfa yönetim paneli resource
rotaları |
| admin.page_publish | Sayfa yayınlama yönetim paneli get
rotası |
| admin.page_notPublish | Sayfa yayından kaldırma yönetim paneli get
rotası |
| admin.category_pages | Kategoriye ait sayfaların yönetim paneli resource
rotaları |
| admin.category_pages_publish | Kategoriye ait sayfaların yayınlama yönetim paneli get
rotası |
| admin.category_pages_notPublish | Kategoriye ait sayfaların yayından kaldırma yönetim paneli get
rotası |
| api.page_category | Sayfa Kategorisi api resource
rotaları |
| api.page_category_models | Sayfa Kategorilerinin çekildiği api post
rotası (Örneğin Laravel Modules Core paketinde Select2 içine kategoriler çekilirken kullanılıyor) |
| api.page_category_group | Sayfa Kategorilerinin grup olarak işlem yapıldığı api post
rotası |
| api.page_category_detail | Sayfa Kategorilerinin detay bilgisinin Datatables formatında çekildiği api get
rotası |
| api.page_category_fastEdit | Sayfa Kategorisinin hızlı düzenleme amacıyla çekildiği api post
rotası |
| api.page | Sayfa api resource
rotaları |
| api.page_group | Sayfaların grup olarak işlem yapıldığı api post
rotası |
| api.page_detail | Sayfaların detay bilgisinin Datatables formatında çekildiği api get
rotası |
| api.page_fastEdit | Sayfanın hızlı düzenleme amacıyla çekildiği api post
rotası |
| api.page_publish | Sayfa yayınlama api get
rotası |
| api.page_notPublish | Sayfa yayından kaldırma api get
rotası |
| api.page_contentUpdate | Sayfa içeriğini güncelleme api post
rotası |
| api.category_pages_index | Kategoriye ait sayfaların çekildiği api get
rotası |
Görünüm Ayarları
Paketin kullanacağı görünümlerin tanımlandığı ayarlardır. Ayar dosyasının views
alanı altında bulunan ayarlardır. Buradaki değerler varsayılan olarak Laravel Modules Core paketinin görünümlerine tanımlıdır.
Görünüm Tasarlama
Paket Laravel Modules Core paketiyle beraber direkt kullanıma hazırdır. Ancak istersen kendine özel görünümlerde tasarlayabilirsin. Bu bölüm özel tasarımlar için bir rehberdir.
Model Kullanımı
Görünümler içinde PageCategory
ve Page
modellerinin özellik ve metot kullanımı hakkında bilgileri kapsamaktadır. Bu metotlar ve özellikler App\PageCategory
ve App\Page
içinde üzerine yazılarak değiştirilebilir.
Page Category
####### Genel Özellikler
- protected $table = 'page_categories'
- protected $fillable = ['name']
####### $page_category->pages Collection
hasMany()
metoduyla App\Page
modeliyle ilişkiyi sağlar
####### $page_category->name_uc_first string
Baş harfleri büyük formatta sayfa kategorisinin adını döndürür
####### $page_category->created_at string
Sayfa kategorisinin kayıt tarihini ayar dosyasındaki tanıma göre döndürür
####### $page_category->created_at_for_humans string
Sayfa kategorisinin kayıt tarihini okunaklı veri şeklinde döndürür. Örneğin: 1 hafta önce
####### $page_category->created_at_table array
Sayfa kategorisinin kayıt tarihini display
(last_login_for_humans) ve timestamp
şeklinde tutulan bir dizi şeklinde döndürür. Datatable'da kullanılması amacıyla oluşturulmuştur
####### $page_category->updated_at string
Sayfa kategorisinin güncellenme tarihini ayar dosyasındaki tanıma göre döndürür
####### $page_category->updated_at_for_humans string
Sayfa kategorisinin güncellenme tarihini okunaklı veri şeklinde döndürür. Örneğin: 1 hafta önce
####### $page_category->updated_at_table array
Sayfa kategorisinin güncellenme tarihini display
(last_login_for_humans) ve timestamp
şeklinde tutulan bir dizi şeklinde döndürür. Datatable'da kullanılması amacıyla oluşturulmuştur
Page
####### Genel Özellikler
- protected $table = 'pages'
- protected $fillable = ['category_id','title','slug','content','description','meta_title','meta_description','meta_keywords','is_publish']
####### $page->category App\PageCategory
belongsTo()
metoduyla App\PageCategory
modeliyle ilişkiyi sağlar
####### $page->title_uc_first string
Baş harfleri büyük formatta sayfa başlığı
####### $page->slug string
Sayfa url formatındaki hali
####### $page->content string
XSS saldırılarından temizlenmiş sayfa içeriği
####### $page->description string
Sayfa açıklaması
####### $page->meta_title string
Sayfa meta başlığı
####### $page->meta_description string
Sayfa meta açıklaması
####### $page->meta_keywords string
Sayfa meta anahtar kelimeleri
####### $page->read boolean
Sayfa okunma sayısı (Geliştirilecek ön yüzde bu değer arttırılıp, gösterilebilir)
####### $page->is_publish boolean
Sayfa yayında mı
####### $page->created_at string
Sayfanın kayıt tarihini ayar dosyasındaki tanıma göre döndürür
####### $page->created_at_for_humans string
Sayfanın kayıt tarihini okunaklı veri şeklinde döndürür. Örneğin: 1 hafta önce
####### $page->created_at_table array
Sayfanın kayıt tarihini display
(last_login_for_humans) ve timestamp
şeklinde tutulan bir dizi şeklinde döndürür. Datatable'da kullanılması amacıyla oluşturulmuştur
####### $page->updated_at string
Sayfanın güncellenme tarihini ayar dosyasındaki tanıma göre döndürür
####### $page->updated_at_for_humans string
Sayfanın güncellenme tarihini okunaklı veri şeklinde döndürür. Örneğin: 1 hafta önce
####### $page->updated_at_table array
Sayfanın güncellenme tarihini display
(last_login_for_humans) ve timestamp
şeklinde tutulan bir dizi şeklinde döndürür. Datatable'da kullanılması amacıyla oluşturulmuştur
Rotalar
Laravel Page Module paketi CRUD işlemleri için sahip olduğu rotaların dışında, ajax
ile işlem yapabileceğin birçok rotaya da sahiptir. Görünümlerini tasarlarken bunları kullanabilirsin.
Rotalarda kullanılabilecek form elemanları bir sonraki bölümde anlatılacaktır.
Sayfa Kategori Rotaları
Başta sayfa kategorisi CRUD işlemleri olmak üzere, bir kısım ajax işlemini de kapsayan rotalar.
Kategoriye Ait Sayfa Rotaları
Belirli kategoriye ait sayfaların CRUD işlemleri olmak üzere, bir kısım ajax işlemini de kapsayan rotalar.
Sayfa Rotaları
Sayfaların CRUD işlemleri olmak üzere, bir kısım ajax işlemini de kapsayan rotalar.
Form Alanları
İşlemler sırasında görünümlerinde kullanacağın form elemanları veri tabanı tablolarındaki sütun isimleriyle aynı olmalıdır. Aşağıda her işlem için gereken eleman listesi verilmiştir.
❗ Aşağıda belirtilen form isimleri kullanılması zorunlu olup, sırası değişebilir.
lang/.../validation.php
dosyanda bu form isimlerinin metin değerlerini belirtmeyi unutma! Ayrıca her dil için validation dosyası oluşturmalısın.
Sayfa Kategori Formları
store
işlemi form elemanları- name
StoreRequest
public function rules() { return [ 'name' => 'required|max:255' ]; }
update
işlemi form elemanları- name
UpdateRequest
public function rules() { return [ 'name' => 'required|max:255' ]; }
-
Api
index
filtreleme işlemi verileri- action=filter
- id
- name
- created_at_from
- created_at_to
-
Api
store
işlemi verileri, yukarıdaki store işlemi ile aynıdır. -
Api
update
işlemi verileri, yukarıdaki update işlemi ile aynıdır. -
Api
group
işlemi verileri- action=destroy
- id (array şeklinde model id'leri)
Kategoriye Ait Sayfa Formları
store
işlemi form elemanları- category_id (Belirli bir kategoriye ait sayfa olduğu için; görünüm içinde hidden elementte değer tutulur)
- title
- slug
- description
- is_publish
- content
- meta_title
- meta_description
- meta_keywords
StoreRequest
public function rules() { return [ 'category_id' => 'required|integer', 'title' => 'required|max:255', 'slug' => 'alpha_dash|max:255|unique:pages', 'description' => 'max:255', 'meta_title' => 'max:255', 'meta_description' => 'max:255', 'meta_keywords' => 'max:255', ]; }
update
işlemi form elemanları- category_id (Belirli bir kategoriye ait sayfa olduğu için; görünüm içinde hidden elementte değer tutulur)
- title
- slug
- description
- is_publish
- content
- meta_title
- meta_description
- meta_keywords
UpdateRequest
public function rules() { $id = is_null($this->segment(5)) ? $this->segment(3) : $this->segment(5); return [ 'category_id' => 'required|integer', 'title' => 'required|max:255', 'slug' => 'alpha_dash|max:255|unique:pages,slug,'.$id, 'description' => 'max:255', 'meta_title' => 'max:255', 'meta_description' => 'max:255', 'meta_keywords' => 'max:255', ]; }
-
Api
index
filtreleme işlemi verileri- action=filter
- id
- slug
- title
- status
- created_at_from
- created_at_to
-
Api
store
işlemi verileri, yukarıdaki store işlemi ile aynıdır. -
Api
update
işlemi verileri, yukarıdaki update işlemi ile aynıdır. -
Api
group
işlemi verileri- action=publish|not_publish|destroy
- id (array şeklinde model id'leri)
Sayfa Formları
Bütün alanlar yukarıdaki Kategoriye Ait Sayfa Formları bölümüyle aynıdır. Farklı olan yer sadece Api index
filtreleme işlemidir.
- Api
index
filtreleme işlemi verileri- action=filter
- id
- slug
- title
category
- status
- created_at_from
- created_at_to
Onaylamalar
Laravel Page Module paketi yapılan her form isteği için onaylama kurallarını belirlemiştir. Bu tür form istek onaylama kuralları için yapman gereken bir şey yoktur. Yukarıda Request
sınıflarının rules
metotlarında açıklamaları yapılmıştır.
Olaylar
Paket içindeki hemen hemen tüm işlemler belli bir olayı tetikler. Sen kendi listener dosyanda bu olayları dinleyebilir ve tetiklendiğinde istediğin işlemleri kolay bir şekilde yapabilirsin.
Sayfa Kategori Olayları
Sayfa Olayları
Lisans
MIT