Görünümlerin Oluşturulması


    × Bunları biliyor muydunuz?
"Projects/ dizini altında oluşturulan proje dizinleri çalışan host'un ismi ile isimlendirilirse Settings/Projects.php yapılandırma dosyasına tanımlamaya gerek kalmadan otomatik olarak çağrılması sağlanır."


Görünümler kullanıcıların karşılaştığı ağırlıklı olarak HTML kodlarından oluşan web sayfalarıdır. Görünümler Projects/Any/Views/ dizini içinde oluşturulur. Oluşturulan bu sayfaların kullanıcılar tarafından görüntülenebilmesi için istek yapılan kontrolcüler tarafından yüklenmesi gerekir.

ZN Framework görünümler için kendi oluşturduğu Wizard isimli şablon sihirbazı kullanır. Zorunlu olmamakla beraber kod geliştirme sürecini kısaltan ve yazım aşamalarını oldukça kolaylaştıran şablon sihirbazının tarafınızca kullanılmasını şiddetle tavsiye ediyoruz. Bu nedenle aşağıda yer alan görünüm örnekleri bu durum dikkate alınarak verilmiştir.

 

 

# Bölüm Başlıkları


# Görünüm Yükleme Yöntemleri
# Görünüm Sayfası Oluşturun
# Görünüm Sayfasını Dahil Edin
# Dahil Edilen Görünüm Sayfasına Veri Gönderin

# Tüm Görünümlere Data Gönderimi
# Görünümün Data Olarak Gönderimi

# Görünümlerin Otomatik Yüklemesi (5.0.0)

# Alt Metotlarda Otomatik Yükleme
# Data Gönderimi
# Alt Görünümlerin Yüklemesi (5.7.4)

# Otomatik Yüklenen Görünümlere Data Gönderimi (5.0.0)
# Görünüm Sınıfı (5.2.6)

# Görünüm Dahil Etme
# Data Gönderimi
# İçerik Gönderimi

 

 

# Görünüm Yükleme Yöntemleri


Görünümler 3 şekilde kontrolcüler tarafından yüklenebilir.

1 - Manuel Yükleme
2 - Dosya Formunda Otomatik Yükleme (ZN >= 4.3.0)
3 - Dizin Formunda Otomatik Yükleme (ZN >= 5.0.0)

 

 

# Görünüm Sayfası Oluşturun


Görünümlerin kontrolcüler tarafından yüklenmesinden önce oluşturulması gerekmektedir. Şimdi örnek olarak Views/ dizini içerisine homepage.php ve content.php isimli 2 adet dosya oluşturun ve içeriğini aşağıdaki gibi düzenleyin.

File: Projects/Frontend/Views/homepage.wizard.php
<html>
    <head>
        <title>{{ $title }}</title>
    </head>

    <body>
        {{ $content }}
    </body>
</html>
File: Projects/Frontend/Views/content.wizard.php
This is Content Page!

 

 

# Görünüm Sayfasını Dahil Edin


Oluşturulan görünümlerin URL üzerinden çalıştırılabilmesi için ilgili kontrolcüler tarafından çağrılması gerekmektedir. Views/ dizini içerisindeki görünümleri çağırmak için Import::view() komutu kullanılır. Bu yöntemler dışında otomatik olarak görünümlerin yükletilebilmesi de mümkündür.

Views/ dizininde yer alan görünümün Controllers/ dizinindeki kontrolcü tarafından nasıl dahil edileceğini gösterelim.

File: Projects/Frontend/Controllers/homepage.php
<?php namespace Project\Controllers;

use Import;

class Homepage extends Controller
{
    public function main()
    {
        Import::view('content');
    }
}
Çalıştır: localhost/homepage

Views/content.wizard.php dosyasının ilgili kontrolcü tarafından yüklendiğini görebilirsiniz.

This is Content Page!
Uyarı: Dahil edeceğiniz sayfa .php uzantılı dosya ise .php uzantısını kullanmaya gerek yoktur.

 

 

# Dahil Edilen Görünüm Sayfasına Veri Gönderin


Oluşturulan görünümler içerisine kontrolcüler üzerinden veri gönderilir. Çünkü görünümü şekillendirecek olan esas nesneler kontrolcüler tarafından hazırlanıp gönderilen verilerdir. Aşağıda bu işlemin nasıl yapılacağını gösteren örnek bir kod yer almaktadır.

File: Projects/Frontend/Controllers/homepage.php
<?php namespace Project\Controllers;

use Import;

class Homepage extends Controller
{
    public function main(...$parameters)
    {
    	$data['title']   = 'Welcome to Web Page'; 
        $data['content'] = Import::usable()->view('content');
        
    	Import::view('homepage', $data);
    }
}

Yukarıda Views/homepage.wizard.php görünümüne 2 adet data gönderilmiştir. Bunlardan 1. veri basit bir string ifade iken 2. veri Views/content.wizard.php görünümünün içeriğidir. Bu içeriğin değişkene aktarılabilmesi için usable() yönteminden yararlanılmıştır. Oluşturduğunuz Views/homepage.wizard.php görünümünün içeriğinde $title ve $content isimli 2 adet değişken yer almaktadır. İşte bu değişkenler yukarıda $data olarak gönderilen dizinin anahtar ifadelerini temsil etmektedir.

Çalıştır: localhost/homepage
This is Content Page!
Tüm Görünümlere Data Gönderimi

View:: sınıfı ile yapılan gönderimler aynı zamanda o an yüklenen tüm görünüm sayfalarına data gönderir. Böylece iç içe kullanılan görünümler için tekrar gönderim yapılmasına gerek kalmaz.

File: Projects/Frontend/Controllers/homepage.php
<?php namespace Project\Controllers;

use Import;

class Homepage extends Controller
{
    public function main(...$parameters)
    {
    	View::example('Example Data')
   
        $page = Import::usable()->view('content');
        
    	Import::view('home', ['page' => $page]);
    }
}

Yukarıdaki kullanımda yer alan View::example() kullanımı ile hem content hem de home görünümlerine $example verisi göndermiş olduk.

Görünümün Data Olarak Gönderimi

Yukarıdaki örnekte hali hazırda bir görünüme zaten başka bir görünümün data olarak gönderildiği görülebilmekte. Ancak bu başlık altında View:: sınıfı ile bir sayfanın nasıl data olarak gönderildiğini göreceksiniz.

Kural: View::dataName('page:pageName')

File: Projects/Frontend/Controllers/homepage.php
<?php namespace Project\Controllers;

use Import;

class Homepage extends Controller
{
    public function main(...$parameters)
    {
        # Views/content.wizard.php data olarak gönderiliyor.
    	View::subpage('page:content')
        
        # Views/home.wizard.php
    	Import::view('home');
    }
}

Yukarıdaki örnek kullanımda Views/content.wizard.php görünümü page: deyimi sayesinde Views/home.wizard.php görünümüne data olarak gönderilmiştir.

 

 

# Görünümlerin Otomatik Yüklenmesi (ZN >= 5.0.0)


Standart olarak kontrolcülerin yükleyecekleri görünümler Import::view() yöntemi ile ilgili metotun içerisine tanımlanır. Ancak her seferinde Import:: ile görünüm dahil etmek can sıkıcı olabilir. Sizi bu sıkıntıdan kurtaracak olan otomatik yükleme özelliği ile tanıştıralım. Otomatik yükleme yapılabilmesi için kontrolcü ismi ile görünüm ismi arasında belirli bir bağ olmalıdır. Bu bağı göstermek gerekirse;

Controller: Projects/Frontend/Controllers/example.php
View: Projects/Frontend/Views/example/main.wizard.php

Yukarıdaki gibi olmalıdır. Bu bağ Example::main() metodu çalıştırıldığında otomatik olarak görünüm sayfasını yükleyecektir.

Alt Metotlarda Otomatik Yükleme

Eğer alt fonksiyonlara otomatik olarak sayfa yükletmek isterseniz aşağıdaki gibi kullanıyorsunuz.

View: Projects/Frontend/Views/controllerFileName/methodName.php

Yani kontrolcü adı Views/ içinde dizin adı olmalıdır. Kontrolcü içindeki yöntemler o dizin içindeki dosya adı olmalıdır.

Data Gönderimi

Data gönderimi için View kütüphanesinden yararlanabilirsiniz. Namespace değeri kontrolcüler ile aynı olduğu için bu kütüphanenin use ile belirtilmesine gerek yoktur.

File: Projects/Frontend/Controllers/example.php
<?php namespace Project\Controllers;

class Example extends Controller
{
    public function main(String $params = NULL)
    {
        View::pageName('Example Page');
    }

    public function try()
    {
         View::pageName('Example Try Page');
    }
}
File: Projects/Frontend/Views/example/main.wizard.php
Example Page
File: Projects/Frontend/Views/example/try.wizard.php
Example Try Page
Alt Görünümlerin Yüklenmesi

Aynı kontrolcü dizine sahip görünümlerin bir biri içerisine dahil edilmesi gereken durumlarda standart olarak görünüm tam yolu yazılır.

File: Projects/Frontend/Controllers/example.php
<?php namespace Project\Controllers;

use Import;

class Example extends Controller
{
    public function main(String $params = NULL)
    {
        Import::view('Example/product');
    }
}

Yukarıdaki kullanım standart olarak bir görünümün dahil edilmesini gösteren bir örnek.

5.7.4 Güncellemesi

Bu güncelleme ile aynı kontrolcü dizine sahip görünümler dizin adını belirtmeden dahil edilebiliyor.

File: Projects/Frontend/Controllers/example.php
<?php namespace Project\Controllers;

use Import;

class Example extends Controller
{
    public function main(String $params = NULL)
    {
        # Example/product.wizard.php görünümü yükleniyor.
        Import::view('/product');
    }
}

Yukarıda kullanılan bölü (/) sembolü başta kullanılması durumunda CURRENT_CONTROLLER . '/product' kullanımı ile aynı görevi görür.

 

 

# Otomatik Yüklenen Görünümlere Data Gönderimi (ZN >= 5.0.0)


Otomatik yüklenen görünümlere data gönderimi  View kütüphanesi ile yapılır. Bu kütüphanenin yöntem adına gönderilecek datanın adı parametresine değeri yazılır. Örnek kullanımı aşağıdaki gibidir.

File: Projects/Frontend/Controllers/example.php
<?php namespace Project\Controllers;

use Import;

class Example extends Controller
{
    public function main()
    {
         View::email('example@example.com');
         View::example(['example' => 'Example']);
         View::otherPage(Import::usable()->view('other'));
    }
}

Yukarıda yüklenen görünüme 3 adet data gönderilmiştir. $email, $example ve $otherPage

 

 

# Görünüm Sınıfı (5.2.6)


View:: sınıfı görünümlere veri gönderme ve görünümleri yükleme işlevlerini yerine getirmesi için oluşturulmuştur. Bu sınıf ile gönderilen veriler altında çağırılan tüm görünümlerde geçerli olur. Bu nedenle küresel veri gönderim sınıfı da denilebilir.

Kontrolcü isim alanına (Project\Controllers) sahip olduğu için kontrolcüler içerisinde use ile belirtilmesine gerek yoktur.

Görünüm Dahil Etme

View:: sınıfı herhangi bir görünümü Import::view() yöntemi gibi dahil edebilir.

Parametreler

View::get(String $path, Bool $usable = false)
5.2.6 String $path Yüklenecek görünümün yolu.
5.2.6 Bool $usable = false Görünüm içeriğinin aktarılabilir olup olmayacağı.
Return Mixed

Kullanımlar

Dosya: Controllers/Home.php
<?php namespace Project\Controllers;

class Home extends Controller
{
    public function main()
    {
        # Views/home.wizard.php dosyası dahil ediliyor.
        View::get('home');
    }
}
Data Gönderimi

View:: kütüphanesi görünüm yüklemeden ziyada veri gönderimi için daha çok tercih edilir. Veri gönderimi tanımlamadan sonra kullanılan tüm görünümlerde geçerli olur. Yani küresel kapsamda veri gönderilmiş olur. Veri olarak sadece bir değer değil aynı zamanda bir başka görünüm, script veya stil gibi dosyalarda göndermek mümkündür.

Parametreler

View::dataName(Mixed $dataValue)
5.2.6 Mixed $dataValue Gönderilen verinin tutacağı değer.
Return Mixed

Kullanımlar

<?php namespace Project\Controllers;

class Home extends Controller
{
    public function main()
    {
        View::name('Micheal')
            ->surname('Johnson')
            ->email('micheal@johnson.com')
            ->get('home');
    }
}

Yukarıdaki örnekte $name, $surname ve $email verileri daha sonrasında yüklenen görünümler içerisinde kullanılabilir olacaktır.

Dosya: Views/home.wizard.php
{{ $name }} - {{ $surname }} - {{ $email }}
Micheal - Johnson - michea@johnson
İçerik Gönderimi

Yukarıdaki data gönderim örneğinde ilgili görünüme veri gönderim örneği verilmiştir. Veri gönderildiği gibi bir görünüm içeriği veya bir stil/script linkleri de gönderilebilir. Aslında aşağıdaki kodlar Import:: yöntemlerinin bir çeşit kullanımını göstermektedir.

<?php namespace Project\Controllers;

class Home extends Controller
{
    public function main()
    {
        View::emailTemplate('template:email')  # Resources/Templates/email.wizard.php
            ->tableView('view:table')          # Views/table.wizard.php
            ->listView('page:list')            # Views/list.wizard.php
            ->jquery('script:js/jquery')       # Themes/Default/js/jquery.js
            ->bootstrap('style:css/bootstrap') # Themes/Default/css/bootstrap.css
            ->get('home');  
    }
}

Yukarıdaki kullanımda çeşitli içeriklerin data olarak gönderildiğini görüyoruz. Bu gönderimlerde sonraki parametreler Import:: yöntemlerinin parametre dizilimi ile aynıdır.

<?php namespace Project\Controllers;

class Home extends Controller
{
    public function main()
    {
        View::tableView('view:table', ['name' => 'My Table']) # Views/table.wizard.php
            ->get('home');  
    }
}