Görünümlerin Oluşturulması


    × Bunları biliyor muydunuz?
"Konsoldan 'php zerocore create-grand-vision' gibi basit bir komutla tüm veritabanı ve tablolarının model dosyasını oluşturabilirsiniz."


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]

# 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 2 şekilde kontrolcüler tarafından yüklenebilir.

1 - Import Kütüphanesi ile Yükleme
2 - Controller/Method Formu ile Otomatik Yükleme [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.wizard.php ve content.wizard.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ı 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 [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
Run: localhost/example
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ün 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)
    {
        View::productPage('view:Example/product');
    }
}

Yukarıdaki kullanımda Example/product görünümünü Example/main görünümüne $productPage datası olarak gönderildiğini gösteren örneğe yer verilmiştir.

[5.7.4]

Bu güncelleme ile aynı kontrolcü dizine sahip görünümler dizin adını yerine (/) sembolü kullanılarak da 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ü gönderiliyor.
        View::productPage('view:/product');
    }
}

Yukarıda kullanılan bölü (/) sembolü başta kullanılması aktif kontrolcü dizinini temsil eder.

Bilgi: Bir görünümü başka bir görünüme data olarak göndermek yerine doğrudan doğruya o görünümün içerisinde de kullanabilirsiniz.

 

 

# 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)
string $path Yüklenecek görünümün yolu.
bool $usable = false Görünüm içeriğinin aktarılabilir olup olmadığı.
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('[email protected]')
            ->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

Görünümlere veri gönderilebildiğ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');  
    }
}