Laravel 5.4 Eloquent Sluggable Kullanımı

Laravel 5.4 ile Eloquent Sluggable paketininin kullanımını inceleyeceğiz. Eloquent Sluggable, bizlere “SEO” dostu link yapısı oluşturmaktadır.

Öncelikle Laravel kurulumumuzu gerçekleştirelim. “Laravel” yazısını gördükten sonra Eloquent Sluggable kullanımına geçebiliriz. Makalede döküman olarak GitHub adresini kullancağım. Sizler de GitHub adresinden Eloquent Sluggable kullanımına dair çok daha fazla bilgiyi edinebilir, projelerinizde kullanabilirsiniz.

Eloquent Sluggable

Laravel‘in kurulu olduğu dizine eriştikten sonra uçbirimde

komutunu çalıştıralım. Ve hemen ardından config/app.php dosyamızı güncelleyelim.

Son olarak; tekrar uçbirimde Laravel’in kurulu olduğu dizinde aşağıda yer alan komutu çalıştıralım.

Buna benzer bir çıktı aldıysanız kurulumu başarıyla tamamlamışsınız demektir.

Modelimizi Güncelleyelim

Modelimizi güncellememiz gerekmektedir. Tabii bunun için öncelikle bir model dosyasına ihtiyacımız var. Uçbirimde, Laravel‘in kurulu olduğu dizinde aşağıdaki komutu çalıştıralım.

Sonundaki -m parametresi aynı zamanda ismini Article olarak tanımladığımız model dosyasına ait bir “Migrate” dosyası da oluşturmaktadır.

Buna benzer bi çıktı aldıysak başarılı bir şekilde model ve migrate dosyalarımız oluşmuş demektir.

Laravel dizinimizde bulunan App klasöründe “Article” isminde model dosyamızın başarılı bir şekilde oluşturulduğunu görüyoruz ve dosyanın en üstüne; namespace App;  satırının hemen altına şu kodu ekliyoruz:

Model dosyamızın devamını ise aşağıda gösterildiği şekilde güncelliyoruz.

Buradaki değerlerin anlamlarını irdelemek ve konfigüre etmek için yukarıda paylaştığım pakete ait GitHub bağlantısını inceleyebilirsiniz. Burada title  alanını döndürmesini sağladık.

Migrate

Model dosyamızı oluşturken aynı zamanda migrate dosyamızı da oluşturmuştuk. Şimdi içerisinde ufak bir güncelleme yapalım.

Burada slug  olarak tanımladığım alanıma kullanacağımız bağlantı adresimiz eklenecektir. Tabii ki title  alanını referans almak şartı ile.

Tablomuzu veritabanına tanımlamadan önce pek tabii bir veritbanımızın olması gerekmekte ve bunu Laravel‘e bildirmek durumundayız.

Laravel ana diziminizde bulunan .env dosyasını açalım ve ilgili kısımları aşağıdaki gibi düzenleyelim. Ben slug  isminde bir veritabanı oluşturdum.

Benim kullanıcı ismim root ve parolam bulunmamakta. Siz kendinize göre düzenlemeyi unutmayın!

Bu ayarlarımı kaydettikten sonra Laravel dizinimizde açtığımız uçbirimde aşağıdaki komutu çalıştırarak config  ayarlarımızı güncelleyelim.

Şimdi veritabanımıza tablolarımızı ekleyebiliriz.

Ben bu komutu çalıştırdığımda Laravel 5.4 ile bir hata aldım. Siz almadı iseniz devam edin. Benim aldığım hata şu şekilde:

Çözüm olarak, AppServiceProvider.php dosyamızın en üstüne aşağıdaki kodu ekleyelim.

Ve devamında;

Dosyamızda bulunan boot  fonksiyonunu güncelleyelim. Tekrar deniyorum.

Eğer aşağıdakine benzer bir çıktı aldıysanız tablolarınız başarılı bir şekilde eklenmiş demektir.


Laravel 5.4 Türkçe Karakter Sorunu

1. Yöntem:

Laravel 5.4 sürümünde str_slug ‘ta karakter hatası mevcut. Şöyle ki;

‘ö’ harfimiz ‘oe’, ‘ü’ harfimiz ise ‘ue’ şeklinde çıkmaktadır. Bunu düzeltmek için sluggable.php dosyamızda kırk yedinci satırda güncelleme yapalım.

2. Yöntem:

Laravel‘de karakter setleri üzerine Slugify paketini kullanabiliriz.

Model dosyamızı açalım.

Yukarıdaki satırı tanımladıktan sonra model dosyamıza aşağıdaki satırları ekleyelim.

Hangi yöntemi kullanacağınız size kalmış.

Slugify GitHub ve bu sorun üzerine gelişmeleri buradan takip edebilirsiniz.

Test Edelim

Laravel dizinimizde açtığımız uçbirimde php artisan tinker komutunu çalıştıralım ve sırası ile aşağıdaki komutları takip edelim.

Article::all() komutumuzun çıktısı aşağıdakine benzer olacaktır.

Görüldüğü üzere; slug  alanımız title  alanını referans alarak bizlere SEO dostu bir link oluşturdu.

 

Herkese iyi çalışmalar.

 

Laravel 5.4 ile Blog Yapalım – Bölüm 1

Bir önceki yazımızda Laravel ve Laravel kurulumu hakkında bilgi vermiştik. Bkz: laravel başlangıçBlog projemizin için Bootstrap 4 ile geliştirilmiş ücretsiz bir blog teması beğendim ben. Bu bölümde genel olarak Blade şablon yapısını inceleyeceğiz. Siz de hazırsanız dersimize başlayalım. Noktalı virgülünüz bol olsun.

Birinci Bölüm:

  • Clean Blog şablonunu inceleyelim ve konfigüre edelim.
  • HTML arayüzümüzü parçalayalım.
    • Parçalar
    • Bölümler
  • Blade şablon yapısını ve kullanımını inceleyelim.
    • include
    • yield
    • extends
    • section
  • Route düzeni hakkında bilgi edinelim.
  • Laravel’de Clean Blog şablonumuzu görüntüleyelim.

Clean Blog Teması

Start Bootstrap’ın ücretsiz olarak paylaştığı Clean Blog şablonunu sadeliği için tercih ettim. Bizim çalışmamız için uygun olacağını düşünüyorum. Gereksiz kodlardan arınmış bir şablon ile Laravel mantığını daha net anlayabiliriz. Toplamda dört ana HTML sayfasından oluşan Clean Blog şablonu Bootstrap 4 Framework ile geliştirilmiştir.

Clean Blog Bağlantısı:

Clean Blog şablonunu edinmek için aşağıda yer alan bağlantıya tıklayabilirsiniz. Ben bu seride Bootstrap 4 Alpha sürümünü kullanacağım. Siz dilediğiniz sürümü indirebilirsiniz.

Şablon dosyalarımızı kendi işletim sisteminize uygun bir arşiv yöneticisi ile dışarıya çıkartalım.

Şablon Dosyalarını Konfigüre Edelim:

Laravel’de arayüz bileşenlerimiz public dizininde, HTML kodlarımız ise resources dizini altında bulunan views klasöründe; Blade şablon yapısı ile yer almalıdır.

Ben, Clean Blog‘un dosyalarını, Laravel‘de işlevsel biçimde kullanmamı sağlayacak şekilde konfigüre ettim.

Parçalayalım ve Bölümleri Tanıyalım

Clean Blog arayüzümüzü Laravel’de dinamik bir yapıda kullanmak için kodlarımızı parçalamamız gerekmektedir. Bu düzenin mantığı başlarda karışık gelse de aslında çok basit. Tüm önyargılarımızdan arınalım ve şevkle okumaya devam edelim. Uykusu gelenler, mayışanlar, esneyenler; kendinize bir kahve alın!

Kullanılan arayüzlerde dinamik olması istenilen her bir bölüm, bir parça olmak zorundadır. Bunu görsel bir şekilde ifade etmeye çalışayım zira bu şekilde tam anlaşılmadı.

GIMP konusundaki yeteneksizliğim sizi “Bu da ne şimdi?” tarzında sorulara yöneltmiş olabilir. Biliyorum. Şu şekilde açıklayayım bunu da. Kırmızı bölgemiz şablonumuzun alt bölümünü oluşturacak ve footer ismini alacaktır. Sarı bölgelerimiz, şablonumuzun içerik bölümünü oluşturacak ve content ismini alacaktır. Son olarak; parlak turkuaz bölgemiz şablonumuzun üst bölümünü oluşturacak ve header ismini alacaktır. Şimdi zihninizde şablon parçalama olayının örtüştüğüne inanıyorum. Bunu yapıyoruz ki; şablonumuzu dinamik bir tema haline getirebilelim ve MVC deseninde sağlıklı bir sistem kurabilelim. Eğer halen sorularınız varsa bu konuda araştırmalar yapabilirsiniz.

Blade şablon yapısı ile bölümlendirmeyi hedeflediğimiz alanların kodlarını ayrıştıracağız. Sabırla devam edelim.

Blade Şablon Yapısı

Öncelikle genel bir tanım yapalım. Ben Blade şablon yapısı olarak adlandırıyorum. Türkçe karşılığı “Tema motoru” anlamlarına da gelmektedir. Front-End (arayüz) çalışmalarımızda kodlarımızın okunabilirliğini sağlar. Yukarıda da bahsetmiştim. Laravel‘de resources dizini altında views klasöründe yer almaktadırlar. Önemli bir nokta ise dosya uzantılarımızı “.blade” olarak belirlemeliyiz. Blade şablon motoruna yazdığımız tüm kodlar PHP üzerinden yorumlanır. Blade sözdizimine kısaca değineceğim. Konudan fazla sapmak istemiyorum. Blade hakkında daha fazla detayı dökümandan bulabilirsiniz.

Blade Sözdizimi

Blade şablon motoru ile ekrana bir veri basmak istediğinizde PHP‘deki print fonksiyonunun yerini küme parantezi almakta. Bir diğer deyişle süslü parantez.

Kısaca örnek verelim:

Yukarıdaki komutumuz Blade ile yorumlandığında şu şekilde algılayacaktır:

Peki.. XSS açıklarından korunmak için PHP’de htmlspecialchars fonksiyonunu kullanıyoruz. Blade ile bu fonksiyon varsayılan olarak kullanılır. Bazı istisnai durumlarda ise bunu devre dışı bırakmak isteyebiliriz. Bunun için küme parantezleri arasına ünlem işareti tanımlıyoruz.

Bunun yanısıra bazı JavaScript çatıları da küme parantezi kullanmakta. Bu tarz bir çatıyı Blade şablon motoru ile kullanmak istersek ne yapmalıyız? Çözüm pek tabii basit. @ bizim kaçış operatörümüz olacak. Tekil kullanımlarda @ kullanırken, uzun kod bloklarında @verbatim kullanacağız.

Blade Include

PHP‘de kullandığımız include ya da require_include fonksiyonlarını hatırladınız mı? Blade üzerinde include kullanımından hiçbir farkı yok. Belirlenen dosyayı, hedef dosyaya dahil eder.

Blade Extends

Extends kullanımı ile @section mirasına erişir, @yield tutucusu ile alanlarımızı bölümlendirebiliriz. Yukarıda açıkladığım bölümlendirme kısmının kod üzerindeki mantığı burada başlar.

Blade Yield

Yield ile oluşturduğumuz bölümlerde belirli alanları dinamikleştiririz. Yield, bir yer tutucudur. Bizim için o bölümü tutar ve dilediğimiz sayfada farklı değerlerde kullanmamıza imkan verir. En temel örnek site başlığımızdır.

Kısaca Blade kullanımından söz ettiğimize göre Clean Blog şablonumuzu Blade şablon motorumuza entegre edebiliriz.

Blade üzerinde Clean Blog

Öncelikle hazırladığım dizin yapısını diyagram ile görelim.

Biz çalışmalarımızda genelde Türkçe kullanmayı tercih etsek de yazılım sektörü global bir alandır. Buna dayanarak klasör ve dizin isimlerimiz herkesin anlayabileceği standartlarda olmalıdır. Buna dayanarak isimlendirme ve konfigüre işlemlerimize devam edeceğiz.

Laravel‘de, Layouts klasörümüz içerisinde şablonumuzun master dosyası bulunmalıdır. Master dosyasından kastımın ne olduğunu kodları paylaştığımda daha net anlayacaksınız. Partials klasörümüzde ise şablonumuzun bölümleri bulunmalıdır. Bu bölümleri sizlerle yukarıda parçalamıştık. Unutmayın, ne kadar düzenli ve parçalı ilerlerseniz ilerde o kadar rahat edersiniz. Blog gibi basit içerikli çalışmalarda sorun olmasa da büyük projelerde çalışırken bu alışkanlığı edinmeniz size artı kazandıracaktır.

Partials içerisinde oluşturduğum header klasöründe ise şablonumuzun üst bölümünü parçaladım. Şablon iskeletimizde head bölümünü, menu bölümünü ve şablonumuza ait olan masthead bölümünü ayrıştırdım.

Kodlarımızı GitHub üzerinden görüntüleyebilirsiniz

Route Yapılandırması

Tema dosyalarımızı konfigüre ettiğimize göre şimdi yönlendirmelerimizi yapalım.

Laravel‘de yönlendirme kodlarımız web dosyasında düzenlenmektedir. Yine ilerleyen derslerde yeri geldiğinde detaylı olarak göreceğiz. Laravel dökümanlarından daha geniş bilgilere erişebilirsiniz.

PHP Artisan ve Laravel’de Görüntüleme

PHP Artisan komutlarını yine Route gibi ilerleyen derslerde detaylı olarak göreceğiz. Şimdilik sadece sanal sunucumuzu başlatalım. Laravel‘in kurulu olduğu dizine terminal kullanarak gelelim ve php artisan serve komutunu çalıştıralım.

Bu çıktıyı gördükten sonra tarayıcıda

  • localhost:8000/
  • localhost:8000/about
  • localhost:8000/detail
  • localhost:8000/contant

Bağlantılarını kullanarak şablonumuzun çalıştığını görebilirsiniz. Laravel ders serisinde bölümleri daha kısa tutarak daha çok bilgi vermeyi amaçlıyorum. Her şey iç içe gözükse de dikkatle takip ettiğinizde üstesinden geleceğinize eminim.

GitHub

Laravel 5.4 ile Blog Yapalım – Başlangıç

Laravel 5.4 çatısı ile Türkçe kaynak olması amacı ile en temel gereksinimleri barındıran bir blog çalışması yapacağız. Öncelikle Laravel‘in evrensel tanımına bir göz atalım. Çalışma boyunca Laravel dökümanına sadık kalacağım. Siz de benimle birlikte takip edebilirsiniz.

Laravel

Laravel, MVC yapısında web uygulamaları geliştirme için tasarlanmış ücretsiz, açık kaynak PHP web uygulama iskeletidir. Laravel, GitHub sitesinde barındırılan kaynak kodu ile birlikte, MIT lisansı altında yayınlandı.

Laravel Kurulumu

Laravel kullanımı için sunucumuzda bazı gereksinimlerin var olduğundan emin olmalıyız.

  • PHP >= 5.6.4
  • OpenSSL PHP Extension
  • PDO PHP Extension
  • Mbstring PHP Extension
  • Tokenizer PHP Extension
  • XML PHP Extension

Bu gereksinimleri sağladığınızdan emin iseniz kuruluma devam edebiliriz. Kurulumda composer  kullanacağız.

Composer

Composer hakkında yine evrensel bilgi kaynağına başvuralım ve alıntılayalım.

Composer, PHP programlama dili için tasarlanmış çoklu platform (cross-platform) bir paket yönetim sistemidir. PHP uygulamaları ve uygulama içerisinde kullanılan kütüphaneler için bağımlılık yönetimi (dependency management) sağlar. Nils Adermann and Jordi Boggiano, tarafından geliştirilmiş olup ilk sürümü 1 Mart 2012 tarihinde yapılmıştır[1]. Composer geliştirilirken Node.js’in “npm” ve Ruby’nin “bundler” sistemlerinden esinlenilmiştir[2].

Composer komut satırından çalıştırılır ve uygulamanın bağımlı olduğu kütüphaneleri uygulama içerisine kurar. Kurulan kütüphanelerin bağımlı olduğu başka kütüphaneler varsa onlar da otomatik olarak kurulur. Composer ayrıca packagist adı verilen ortak bir kaynaktan izin verilen kütüphanelerin uygulama içerisine kolayca kurulmasına da imkan verir. Yüklenen kütüphanelerin uygulama içerisine otomatik olarak yüklenmesi (autoload) için bir altyapı da sunar.

Composer Yükleyelim

Ben bir Linux kullacanıcısıyım. Linux 4.10.8-1-MANJARO x86_64 GNU/Linux Siz kendi işletim sisteminize göre buradaki bağlantıyı takip ederek kurulumunu yapabilirsiniz.

Ben kendi paket yöneticimden yüklüyorum.

Linux Arch & Manjaro

Komutu ile birlikte composer kurulumunu başarılı bir şekilde gerçekleştirmiş bulunmaktayım. Siz de yüklemenin doğruluğunu öğrenmek isterseniz terminal ekranınızda composer  komutunu çalıştırabilir ve kullanabileceğiniz argüman listesine ulaşabilirsiniz.

Composer Create Project

Composer üzerinde create-project komutunu kullanabiliriz. Bu komut bizlere ilgili paketi yeni bir proje halinde indirmemizi sağlayacaktır.

Terminalde kurmak istediğiniz dizini açalım. Linux’ta pwd  komutu ile bulunduğunuz dizini görebilir, cd komutu ile farklı dizinlere geçiş yapabilir ve ls komutu ile de bulunduğunuz dizinde bulunan dosyaları görüntüleyebilirsiniz.

Terminalde kurulumu yapmak istediğiniz dizine geldiğinizde aşağıdaki komutu çalıştıralım:

Buradaki blog sizin projenizin ismi olacaktır. Siz bunu dilediğiniz şekilde değiştirebilirsiniz. Kurulumdan sonra ilgili dizinde blog isminde bir klasör oluştuğunu görüyoruz.

Laravel 5.4 ile Geliştirmeye Hazırız

Laravel çalışmalarımızda bazı yetkilendirmeleri tanımlamamız gerekmektedir. Bunlar depolama alanı içerisindeki storage  ve bootstrap/cache  dizinleridir.

PHP Artisan

Laravel’de projemizi geliştirirken sık sık artisan komutlarını kullanacağız. Bu konuya ileride daha çok değineceğiz. Şimdi projemizi çalıştıralım.

Bu komut bizlere varsayılan olarak 8000 portunda Laravel’i çalıştırmaktadır. Eğer farklı bir port üzerinde çalışmak isterseniz;

Yukarıdaki kullanım gibi 5050 portunda da çalışabilirsiniz. Eğer buraya kadar sorunsuz bir şekilde kurulumu gerçekeştirdi iseniz bir sonraki dersimize geçebilirsiniz.

GitHub:

Github üzerinden çalışmaya ulaşabilirsiniz.

  • https://github.com/mkoseoglu/laravel5.4-blog

Kaynak:

  • https://laravel.com/docs/5.4/installation

PHP SSH Sürümü Yükseltme ve Laravel 5.4 Kurulumu

Merhabalar, bugün SSH ile sunucuma Laravel 5.4 kurmak isterken Plesk panelde 7.1 olan PHP sürümüm SSH‘de 5.4 olarak gözükmekteydi. Bu yüzden kurmakta sorun yaşadım.

SSH PHP Sürümünü Yükseltme

SSH‘de aşağıdaki komutla çözüme geçelim.

Eğer ki çıktımız /usr/bin/php ise devam edelim.

Ben kendi Plesk panelimden 7.1’in yolunu kısayol oluşturdum.

Laravel 5.4 Kurulumu

Kurulumu gerçekleştirelim.

Kurulumdan sonra gerekli izinleri verelim.

Şimdi dizin işlemlerine geçelim.

Public klasöründe bulunan server.php dosyasının ismini index.php olarak değiştirelim ve yine Public klasöründe bulunan .htaccess dosyası ile birlikte ana dizine taşıyalım.

Şu an hatasız Laravel ekranını görmeniz gerekmekte.

Artisan Kullanımı

Öncelikle çalıştıralım.

Şu an 8125 portunda çalışabilirsiniz.

https://laravel.com/docs/5.4/artisan

Murat Bastas’a teşekkürler.

Laravel 5.4 Auth DB Users Tablosu

Laravel 5.4‘de yönetim paneli kullanımında giriş ve çıkışlarda Auth mekanizmasını kullanıyoruz. Migration ile oluşturduğumuz veritabanı şemasında tablo ismi users olarak gelmekte. Biz peki bunu değiştirmek istersek nasıl bir yol izlemeliyiz?

Model

Öncelikle model dosyamızda aşağıdaki güncellemeyi yapalım ve tablo ismini belirleyelim.

Config

Sonraki adımda config içerisinde yer alan auth.php dosyamızı güncelleyelim.

Validation

En çok yapılan hata da burası. Ben dahil birçok kişinin yapmayı unuttuğu güncelleme. E mail alanında yapılan kontrollerin sağlandığı tablo ismi.

Dizin: app/Http/Controllers/Auth/AuthController.php