PHP kullanarak html şablonları oluşturma

3 Cevap php

Im MVC çerçeveler etrafa ve mevcut olanları inceleyerek nasıl çalıştığı hakkında çok şey öğrenme. Gördüğüm her çerçeve her denetleyici her yöntem kendi şablon dosyası olan bir düzeni var gibi görünüyor. Yani böylece ve böylece, kayıt, bir giriş şablon, bir çıkış şablon olacak.

Benim sorum neden bütün bir dosya içinde tüm sayfa için bir şablon oluşturmak nasıl ve vardır. Birden fazla sayfada giriş formunu göstermek istedim Diyelim ki, size bunu görüntülemek istediğiniz her şablon için giriş formunu oluşturmak zorunda değil mi? O Kendinizi tekrarlamayın kural (KURU) karşı gelmek değil mi?

Ben bir şeyler yapıyorum yolu şimdiye kadar şablonları liitle parçalarını oluşturmak ve sonra her bir sayfa oluşturmak için bunları birleştirerek oldum olduğunu. Peki yerine böyle bir şey yapmanın,

$title = 'Blah Blah Blah';
$user  = 'Jon Miller';

include 'index.phtml';

<html>
  <head>
    <title><?php echo $title; ?></title>
  </head>
  <body>
    <h3><?php echo $user; ?></h3>
    <form>login form</form>
  </body>
</html>

Ben bu işi yapıyorum

$title = 'Blah Blah Blah';

include 'header.phtml';

$user  = 'Jon Miller';

include 'user.phtml';
include 'login_form.phtml';
include 'footer.phtml';

header.phtml
<html>
  <head>
    <title><?php echo $title; ?></title>
  </head>
  <body>

user.phtml
    <h3><?php echo $user; ?></h3>

login_form.phtml
    <form>login form</form>

footer.phtml
  </body>
</html>

Alway gibi, ben sadece nasıl ve neden birlikte, bunu yapmak için doğru yolu bilmek istiyorum ... Bu sadece KURU yönetimine karşı gitmek gibi görünüyor.

Teşekkürler

3 Cevap

Tek kelime: Organizasyon. Sayfanın her bir parçasını ayırmak bunların her biri ayrı ayrı düzenlenmiş / görülebilmesini sağlayacak. Bu basit kavramı çok faydalıdır. Örneğin, giriş işlemi işlemek istediğiniz takımda herkesin kolaylıkla login_form.phtml düzenlemek zorunda olduğunu anlamaya ve onlar düzenleme login_form.phtml olacak az olasıdır istemeden ile müdahale emin olabilir Diğer işlevler.

En iyi uygulama olarak, burada (tam olarak değil ama benzer) ben bunu nasıl olduğunu.

$Title = 'Blah Blah Blah';
$User  = 'Jon Miller';

$ThemeName = "MyGreenPage";
$Contents  = array("User", "Login_Form");

function Include($FileName) {
    if (file_exists($FileName))
        include $FileName;
}

MyGreenPage.phtml:

<html>
  <head>
    <title><?php echo $title; ?></title>
<?php
    foreach($Contents as $Content)
        Include("$Content.pcss");
?>
<?php
    foreach($Contents as $Content)
        Include("$Content.pjs");
?>
  </head>
  <body>
<?php
    foreach($Contents as $Content)
        Include("$Content.phtml");
?>
  </body>
</html>

User.pcss:

/*  Some styles needed by User */

User.pjs:

/*  Some script needed by User */

User.phtml:

    <h3><?php echo $user; ?></h3>

Login_Form.pcss:

/*  Some styles needed by Login_Form */    

Login_Form.pjs:

/*  Some script needed by Login_Form */

Login_Form.phtml:

    <form>login form</form>

Bana bu tam olarak ne ben (OOP kullanmak ne) bu yüzden tam olarak çalıştırmak olmayabilir olmasıdır ve bunu düzenlemek gerekebilir olduğunu tekrar hatırlatmak istiyorum.

Sen 'layouts' ve 'view helpers' kavramlarını kontrol etmelisiniz. Ben bu kavramların Zend Framework sürüm bağlantılı olduğunuz ederken, diğer MVC çerçeveler (ve MVC kavramı) de onlara sahip olmalıdır.

Örneğin giriş formu - - Sitenizde kullanılan genel şablon - Sitenizde 'düzen' içine dahil edilir Temel fikir, sayfa 'view' olmasıdır. Örneğin bir kullanıcı profili - - farklı bir bakış açısıyla farklı bir denetleyici, talep ettiğinizde bu görünümü de aynı düzen içinde yer almaktadır.

Tüm sayfalarda bir giriş formu gibi bir şey eklemek için, bir görünüm yardımcı kullanılabilir. Bu görüş yardımcı geçerli kullanıcı görüntülemek veya giriş durumuna bağlı olarak, bir giriş formu görüntüleyebilirsiniz. Görünüm yardımcıları düzeni dahil, veya belirli denetleyicisi (sürece MVC framework verir olarak adlandırılan bir çeşit kesimleri işlemek) ile dahil edilebilir.

Lütfen şablonları HTML etiketlerini bölmek zorunda değilsiniz, çünkü - İki aşamalı yöntem, (şimdi ne yaptığınızı başlığı da dahil olmak, sonra içerik, ardından altbilgi) parçaları doğrusal dahil daha iyi çalışır 'include'. Zend Kılavuzu bir düzen içinde bir good visual example bakış şablonlar vardır.

Bu proje için ben üzerinde çalışıyorum, tüm görünümler XSL şablonları vardır. Bunun yerine görünümüne değişkenleri geçirmeden, ben denetleyicisi tüm XML oluşturmak ve görünümü ile onu dönüştürmek.

Ben tek bir dosyada tüm şablonları tutmak, ve yine ben istiyorum bunları düzenleyebilirsiniz çünkü bu yapıyı seviyorum. O da çok esnek ve belgelerin ton standart bir şablon dili bulunuyor. Bu şimdiye kadar gerçekten iyi çalışıyor.

Bu yapının gerçekten iyi bir örnek WoW Armory sitesi (kaynağını görmek) olduğunu.