MVC: İç içe Görüntüleme ve Kontrolörler (bir web sitesi için)

2 Cevap php

Ben MVC deseni kullanarak bir PHP web sitesi yapmak üzereyim. Site oldukça basit olduğu gibi bir çerçeve kullanarak değilim ve bu beni doğrudan desen hakkında bilgi edinmek için iyi bir fırsat verecektir hissediyorum. Ben bir kaç soru var.

Soru 1: Nasıl benim görünümleri düzenlemek gerekir? Ben başlık ve altbilgi olacak ve hangi aralarında iç içe olmak için bir içerik görünüm sağlayacak bir sayfa görünümü olan düşünüyorum.

Soru 2: 5 İçerik sayfalarınız varsa, ben Sayfa görünümünde içinde yuvalanmış içerik olarak kullanılabilir 5 farklı görüşlerini yapmak gerekir? Ya da, ben hepsini AbstractContent denilen soyut bir görünüm uzatmak yapmak gerekir?

Soru 3: Ne kontrolörleri hakkında? Ben en az bir ana denetleyici olması gerektiğini düşünüyorum. Ama sonra nereye istek oradan gidiyor? Başka bir denetleyiciye? Veya sadece Page görünümü arama ve onları terk etmeli? Ben kontrolörleri, giriş kolu muhtemelen bir modeli değiştirmek ve bir görünüm seçmek gerekiyordu düşündüm. Ama ne bir kontrolör aramalar ayrıştırılması için ek giriş gerektirir görünümünde iç içe manzaralı biri varsa?

Soru 4: kontrolörleri görünümüne parametreleri geçmesine izin var mı? Veya denetleyici basitçe sonra görünümü etkileyecek, modelini değiştirmek gerekir? Ya da sadece DB erişimi ve benzeri şeyler için model?

2 Cevap

1 - Bu bir tercih meselesidir. Basit yolu, ayrı bir başlık ve altbilgi dosyası var olacaktır. Sonra sayfa denetleyicisi böyle bir şey yapabileceğini

$title="Page Title";
$var1 = 'var1';
$var2 = 'var2';
$var3 = array("asdf","adsfasdf","234");    

include(HEADER); //$title is in header
include(DIR_VIEWS . 'page.php'); //$var1/2/3 are in page.php
include(FOOTER);

// variable were created before pages were included so they will be set in the templates

Eğer iç içe yol gitmek olsaydı str_replace uğraşmaktan başlamak zorunda kalacak ve bu cevap için kapsam dışında, bir şablon motoru yöneliyoruz başlar.

2 - views nesneleri yapmaya gerek yok. Bir "görünüm" sadece görünümü için html içeren dosyasistemiyle bir dosya olabilir. Yukarıda benim örnekte olduğu gibi. Bu sayfalar yanı sıra döngü / echo değişkenler temel php içerebilir.

3 - Sen (bazen memuru veya yönlendirici olarak adlandırılır) bir ön denetleyicisi nitelendiriyor. Bu gerçekten gitmek yoludur. Bir ön kontrol oluşturmak için bir kaç yöntem vardır.

Sen denetleyicileri işaret URL'ler bir dizi olabilir.

$routes = array (

    '~^/home/$~' => 'home.php',
    '~^/contact/$~' => 'contact.php',
    '~^/blog/.*?$~' => 'blog.php'

);

veya denetleyici adı olarak url içinde ilk "dizin" kullanmak ve bu dosya denetleyicisi dizin oluşturabilir yükleyebilirsiniz.

4 - kontrolörün tüm nokta modelinden bilgi almak ve görünümüne veri geçmektir.


Edited for comment


Eğer bir kenar çubuğu sahip manzaralı bir demet isterseniz sadece diğer görünümde o görünümü bulunmaktadır. Örneğin:

<div id="content">
    <p>lorem ispum stuff</p>
</div>
<?php include(DIR_VIEWS . 'sidebar.php');

Sadece emin olun kontrolörleri size kenar çubuğu işlevleri için bazı kod içeren sidebars ile "kontrol" sayfalarını:

if ( $_GET['keywords'] ) {
    $sidebar_search_results = get_search_results($_GET['keywords']);
}
// this code should be in a file that you include

$sidebar_search_results kenar çubuğu görünümü ayrıştırır sonuçları ve görüntüler bir dizi olabilir.

Soru 1:

Bu gerçekten bunu yapmak için bir yol, ve ben her zaman kullanmak biridir.

Soru 2:

Sadece mümkün olduğunca basit görüşlerini tutmak. Ben sadece 5 ayrı incelemeler (düz php dosyaları) oluşturma eğilimindedir.

Soru 3:

Normal mvc desen olarak, bir denetleyici yürütür (sadece bir önyükleme dosyası OS, index.php) bir ön denetleyicisi var.

HMVC kontrolörler, diğer kontrolörler ek isteği gönderebilirsiniz.

Soru 4:

Normal MVC desen görünümleri kalıcı Normal uygulamalar üzerinde uygular ve modelleri izleyebilirsiniz. Her isteği her şey yeniden çünkü web uygulamaları ile bu mümkün değildir. Yani en çok kullanılan model kontrolörü görünümüne parametreleri geçmesine izin etmektir.