Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP
Code

Yii2 ile Nasıl Uygulama Yazılır: MVC, Formlar ve Yerleşim Planları İncelemesi

by
Difficulty:IntermediateLength:MediumLanguages:
This post is part of a series called How to Program With Yii2.
How to Program With Yii2: Getting Started
How to Program With Yii2: Working With the Database and Active Record

Turkish (Türkçe) translation by Oğuz Çelikdemir (you can also view the original English article)

Final product image
What You'll Be Creating

Yii2 ile Nasıl Uygulama Yazılır: Genel Bakış eğitiminde, yerel makinamıza Yii2' yi kurup bir Merhaba Dünya uygulaması geliştirdik, ardından uzak sunucu ortamımızı ayarladık ve Github'ı kodumuzu dağıtmak için kullandık. Bu eğitimde Yii' nin, MVC Framework ile uygulama geliştirmede daha temel kavramları olan Model, View ve Controller yapısını ele alacağız. Menü ve Bootstrap (CSS kütüphanesi) öğelerinin yerleşim planlarını ve özelleştirmelerini de inceleyeceğiz.

Örneklerde, basit durum güncelleştirmeleri yayınlamak için bir framework geliştirdiğimizi farz ediyoruz, ör. kendi mini Twitter uygulamamızı. Fakat, verileri veritabanında saklayacak kadar ileri gitmeyeceğiz. Bunu, Yii' nin model ve view katmanlarını oluşturan Gii adlı yeteneğini inceleyeceğimiz bir sonraki derse saklıyorum. 

Gii, bu eğitimde yapacağımız herşeyi basitleştirip otomatikleştiriyor fakat temel kavramların üzerinden geçmek ve bu görevleri en az birkez manuel yerine getirmek önemlidir.

Modeller

Model nedir? Wikipedia' da söylenilen, "Model, durumunda bir değişiklik olduğunda ilgili View ve Controller' ları bilgilendirir. Bu bildirim, view' lerin güncellenmiş çıktılar üretmesine, controller' ların da komut setlerini değiştirmesine olanak tanır"

Benim için, model' ler genellikle "dış" dünyada oluşturduğum şeyin kavramlarını temsil eder. Durum güncelleştirmelerini düşünürsek, Status modeli bir durum güncelleştirmesinin tüm özelliklerini, bir durumu yada durumları sorgulamayla veya değiştirmeyle ilgili tüm işlemleri ve yöntemleri içerir.

Modellerinizi oluşturmada en iyi yöntem, onlara olabildiğince fonksiyonellik ve zeka katmaktır. MVC pratiğinde, modelleri "ağır", controller ve view' leri hafif görevlerden oluşturursunuz. Yii, özellikle formlar ve veritabanları söz konusu olduğunda, model oluşturma işlemini basitleştiren, web ve uygulama geliştirmede yaptığınız şeylere özgü bazı mükemmel özellikler sunar; Bunların çoğunu daha sonraki eğitimlerimizde inceleyeceğiz.

Status modelimizi oluşturalım. Kod örneklerimiz için Git deposunu kullanabilirsiniz. Ben Genel Bakış eğitiminde yarattıklarımı temel alıyorum - referans olması açısından linkini veriyorum. Bahsedilen eğitimdeki Github deposunun bitmiş hali burada.

Status.php yi /hello/models/Status.php dizininde oluşturacağız. Durum mesajı göndermek için, mesaj metnini kullanıcıdan almamız gerekir. Ayrıca genele açık veya gizli olarak yayınlamak için izin alanları da oluşturacağız.

Rules fonksiyonuna dikkat edin - kullanıcıların her alana uygun bilgileri girmesini sağlamak adına Yii' nin form doğrulaması kullanılıyor. Yii kullanıcı girdileri gibi form kontrollerinde JavaScript kullanır.

Benim yarattığım getPermissions() fonksiyonu, formun açılır-kapanır (dropdown) liste elemanları için kullanılacak.

Şimdi, kullanıcının metin güncellemelerini oluşturmasına ve görüntülemesine izin veren controller' ı oluşturarak yolumuza devam edelim.

Controllerlar

Controller nedir? Wikipedia' da söylenilen "Controller, modelin durumunu güncelleştirmek için modele komutlar gönderebilir (ör. bir belgeyi düzenlerken). Aynı zamanda, ilgili view' e model' in view katmanına ait görünümü değiştirmesi için de komutlar gönderebilir." Tipik bir Yii web uygulamasında, bir sayfanın URL adresi, modeli kullanarak sayfa verilerini yüklemede ve view' i kullanarak sayfanın görüntüsünü oluşturmada bir controller' ı çalıştırır.

İlgili fonksiyonları mantıksal olarak tek bir controller' da gruplamak en iyisidir. Eylem (action) olarak adlandırılan, controller' ın farklı metodları her bir fonksiyonu yerine getirir. Bunlar genellikle belirli sayfalara karşılık gelir. Örneğin, http://localhost:8888/hello/web/status/create adresi oluşturacağımız StatusController' unun create eylemini tetikler.

Status ile ilgili özellikleri geliştirirken, bu fonksiyonları tek bir StatusController.php dosyasında gruplayacaksınız. Şimdilik, yalnızca bir create fonksiyonu oluşturacağız.

/hello/controllers/ dizininde, StatusController.php isimli dosyayı oluşturun:

Form oluşturma eylemleri tipik olarak model verilerini çağırır ve ardından POST işleminin bir parçası olup olmamalarına bağlı olarak bir kopyasını oluşturur. Değilse, boş bir form görüntülenir. Gönderilen veriler alınıyorsa, doğrulanmış vede işlenmiştir. Bizim durumumuzda bu, view dosyasını oluşturmaya devam etmek demektir.

Viewler

View nedir? Wikipedia, "View, son kullanıcının etkileşimde olduğu sunum katmanını oluşturmada model' den bilgi talep eden." diye tarif ediyor. Yii' de view, sayfanın çıktısını HTML' e dönüştürmede PHP benzeri bir şablon dilinden yararlanır ve model tarafından yüklenen ve controller' dan gelen verileri kullanır.

View' ler tipik olarak ilgili controller' la bağlantılı tek bir dizinde yer alırlar, ör. StatusController' a ait view' ler views/status klasöründe yer alır.

Yii' de, kısmi / parçalı görünüm olarak adlandırılan şeylere genellikle form kodu dahildir. Bu dosyalar çoğunlukla alt çizgi öneki ile adlandırılır. Bunların başka view' lere dahil edilmesi amaçlanmıştır. Bu, güncel form kodunun sayfa oluşturmada ve güncellemede yeniden kullanılmasını sağlar.

İlk olarak, formu oluşturan Create view' ini geliştireceğiz. Ardından, gönderdiğimiz durum değişikliklerini gösteren bir View' de oluşturacağız. Gelecek eğitimlerde bu, veritabanı ile çalışırken, veriyi kaydetmede ve getirmede biraz farklı çalışacaktır.

İşte basit bir örnek, yayınlanan verileri görüntüleyen /hello/views/status.view.php isimli view dosyası:

Bir view dosyasının HTML ve PHP kodlarının bir karışımı olduğuna dikkat edin. Controller gönderilen verileri aldığında, kullanıcının gönderdiği verileri gösteren yukarıdaki view'i işleme alır.

Şimdi de formlardan bahsedelim ve form view dosyasını oluşturalım.

Formlar

Formlar, web uygulaması geliştirirken, kullanıcıdan veri toplamada hergün kullandığımız şeylerdendir ve genellikle kullanıcı girdisini veritabanına göndermede kullanılır. Yii, formlar aracılığıyla veri girişi,  güvenlik, doğrulama ve gönderim işlemini basitleştirmek için oldukça fazla yardımcı kod sunar. Yii' de formlar bir tür view' dir.

Yii2 ActiveForm Blank

Durum güncelleştirmesi oluşturmak için bir form örneği:

Yii2 Widget sınıfından türeyen ActiveForm sınıfını HTML giriş alanlarımızı oluşturmada kullandık. Status modelinin getPermissions metodu açılır-kapanır (drop-down) liste tarafından nasıl çağrılıyor dikkat edin.

Yii2 ActiveForm Create

Submit butonuna tıkladığınızda StatusController' un create eylemine (action) geri dönersiniz. Gönderilen veriler alındığında, form dosyası olan create.php yerine view.php dosyası görüntülenir.

view.php dosyası görüntülendiğinde view dosyasının görünümü şöyledir:

Yii2 Status View

Ardından, Status oluşturma formuna bağlantılar (link) eklemek için genel menü çubuğunu güncelleyelim.

Yerleşim Planları (Layouts)

Yerleşim planları (layouts), HTML belgesini çevreleyen, üst bilgi (header), alt bilgi (footer) ve menü gibi bir web sitesinde tekrarlanan öğelerin çoğunun şablonudur. Bunlar bir web sitesinin çoğu sayfasında ortak olduğu için, yerleşim planında bir kere inşa edilir ve kodun her yerinde tekrar edilmezler.

\hello\views\layouts\main.php dosyasına göz atarsanız, yerleşim planının yapısını görebilirsiniz.

View' ler çoğunlukla bir web sayfasının gövdesini temsil eder - bu, üst bilgi ve menü ile alt bilginin başlangıcı arasında kalan kısımdır. Yerleşim planı $content değişkenini echo (çıktıyı ekrana bastırma işlemi) ettiğinde oluşturulurlar:

Her zaman gerekli olmasa da Yii, uygulama başına birden fazla yerleşim planı oluşturmanıza imkan tanır. Uygulamanıza bağlı. Controller' lar varsayılan bir yerleşim planı sunar ve bunu herhangi bir eylem (action) için geçersiz kılabilirsiniz. Controller' larda ilgili etkinlikleri mantıksal olarak gruplarsanız, son kullanıcı arayüzünün controller' daki tüm eylemler için aynı yerleşim planını kullanması mümkün olur.

Şimdi, menü çubuğunu, bir "create" eylemi ile Status menüsünü içerecek şekilde güncelleyelim. Yii2 yerleşim planları ve stiller (stylesheet) için Bootstrap framework' ünü kullandığından, Bootstrap açılır-kapanır listesini oluşturmasını bildirmemiz yeterlidir.

İç içe geçmiş dizi yapısındaki Nav::widget bloğunu güncelleyelim:

Görmeniz gereken şey şöyle olmalı:

Yii2 NavBar and Drop Down Menu

Sırada Ne Var?

Artık model, view, controller, form ve yerleşim planları da dahil olmak üzere, Yii' nin MVC mimarisinin pratikte nasıl çalıştığından birazda olsun haberdar olduğunuza göre, bütün bu herşeyi otomatik olarak oluşturan Yii' nin temel yapı oluşturucusu Gii' yi durumlar için bir veritabanı şeması oluşturmada kullanacağız. İşler biraz daha hızlı hareket etmeye başlayacak.

Bir sonraki Yii2 eğitiminden haberdar olmak istiyorsanız, @reifman twitter hesabımı yada yazar sayfamı takip edebilirsiniz. Yazar sayfamda bu seriye ait tüm eğitimler yayınlanır yayınlanmaz yer alıcak.

Konuyla İlgili Diğer Bağlantılar

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.