Sadece düzenleri için Zend Framework nasıl kullanılır?

6 Cevap php

Geçenlerde bir PHP iletişim formu haricinde ayrı ayrı HTML dosyaları kadar yapılmış bir proje ile yardımcı olmak için getirildi. Yani bu konuda (hatta PHP) nesne yönelimli programlama, MVC, ya da düzenleri bir ipucu bile yok.

Proje oldukça büyük, ama ben yavaş yavaş çoğunlukla düzenleri kullanmaya başlamak için, bu projeye Zend Framework entegre etmek istiyordu. Bunu bir dosya yapılmış olmalıdır küçük güncellemeler yapmak için zaman böyle bir atık olduğunu çok fazlalıklar vardır.

PHP ilk günlerinde, her sayfada (örneğin bir başlık ve alt) dahil ederek içerik blokları ayrı olabilir. Şimdi, Zend Framework gibi MVC çerçeveler kullanarak bir görünüm yardımcı kullanarak tek sayfa içeriği (views) dahil düzen dosyaları oluşturabilirsiniz. Gerçekten bu gibi ben sadece bir yerde, benim üstbilgi veya altbilgi "include" anlamına gelir çünkü.

Ancak, ben bu (yani yerine bağımsız bileşenler olarak Zend Framework MVC bileşenleri kullanarak) uygulama önyükleyebilir / sevk olmadan çalışmak nasıl emin değilim. Ne düzenlerini kullanmak üzerine siteyi geçiş için en iyi yaklaşım olacaktır? Nasıl çalışır? Bu bile iyi bir fikir mi?

6 Cevap

Geçenlerde ZF düzeni yararlanmak için miş-mash dosya yapısı * bir dönüşüme başladık & ettik bakıldı. Hedef düzenleri ve görünümleri için recommended file structure içine html içeren tüm dosyaları taşımaktır. Bu onun için hazırlanmak için nasıl:

  1. , Her dosyanın tüm biçimlendirme ayıklayın içinde değişkenleri tutmak ama mantık yok. Bu dosya / uygulama / izleme / scripts / page / * view *. Phtml (örnek / uygulama / izleme / scripts / index / login.phtml için) Ad
  2. . Çoğu sayfaları gibi / uygulama / planlar / scripts / layout phtml uyan bir iskelet oluşturmak ve bunun gibi bir şey içerir edelim:

    <?php echo $this->doctype('XHTML1_STRICT'); ?>
    <html>
    <head>
        <?php echo $this->headLink(); ?>
    </head>
    <body>
        <div id="wrapper">
        <?php echo $this->layout()->content; ?>
        </div>
    </body>
    </html>
    
  3. (Senin yolunu içerir ve Autoloader kayıt Zend ekleyin.) Tüm dosyaları dahil edilecek bir dosya oluşturun (bir single point of entry yoksa bu durumda, - oraya yerleştirmek!) Bir başvuru oluşturun Bu eşdeğer düzeninize, için:

    $view = new Zend_View();
    $view->setScriptPath('/application/views/scripts');
    
    $layout = new Zend_Layout();
    $layout->setLayoutPath('/application/layouts/scripts');
    $layout->setView($view);
    
    Zend_Registry::getInstance()->set('layout', $layout);
    
  4. Eğer (mantıkla, html değil) yapmamışlar her php dosyası düzeni erişimi, ve onu değiştirmeye sahip olması gerekir:

    $layout = Zend_Registry::getInstance()->get('layout');
    
    $view = $layout->getView();
    $view->headLink()->appendStylesheet('/css/a_css_file.css');
    
    // most important step, done automatically when using MVC, but now you have to do it manually
    $layout->content = $view->render('index/login.phtml');
    
    echo $layout->render();
    
  5. En sonraki önemli adım, başka bir düzen ekliyor:

    // /application/layouts/scripts/blank.phtml
    <?php echo $this->doctype('XHTML1_STRICT'); ?>
    <html>
        <head></head>
        <body>
            <?php echo $this->layout()->content; ?>
        </body>
    </html>
    

    ve mantık-containg dosyalardan biri

    $layout = Zend_Registry::getInstance()->get('layout');
    $layout->setLayout('blank');
    

İdeal olarak, yakın bir gelecekte Cephe Denetleyicisi gibi bir tasarım desenine bakarak bir MVC-benzeri yapıya adapte başlayabilirsiniz.

* Bir dosya: modeli, kontrolör, html, hiçbir mantıksal sırayla.

Kesinlikle izolasyon Zend_Layout kullanabilir ve kılavuzunda ayrıntılı ediyor:

28.2.3. Using Zend_Layout as a Standalone Component

Ben o zaman çıktı tamponlama yoluyla komut dosyası çıkışını yakalamak gerekiyor ve yankılandı edilecek düzene geçmek olacağına inanıyorum.

Bu durum ideal değildir, ve tam MVC taşımadan ben muhtemelen farklı bir temel çiftleşmiş sistemini kullanarak veya burada diğer açıklamalarda tavsiye aşağıdaki tavsiye ederim.

Şahsen ben sadece şablon / düzeni yönetimi için kullanmaya planlıyorsanız Zend Framework kullanarak değil tavsiye ederim. Smarty seçimdi (PHP projenin eskiden parçası) olmak ile PHP ile çiftleşmiş için çok daha iyi çözümler vardır.

Smarty daha sonraki bir tarihte bunu yapmak gerekiyorsa, Zend Framework ile oldukça kolay entegrasyon sağlamak yapar, ve Zend DevZone üzerine Bunun üzerine birkaç makale bulunmaktadır.

Bu sizin için ne arıyorsanız eğer emin değilim, ama bbc onlar bütün MVC kullanmadan Zend Framework parçalarını kullanabilirsiniz bazı videolar var. Ben onlar bölgelerinde 4 ve içinde olduğunu düşünüyorum 5 http://bbcwebdevelopers.blip.tv/

Zend_Layout, bir üstbilgi veya altbilgi dahil ilgili değil daha ziyade iyi bir tek büyük şablonun içine içeriğinin çeşitli bit eklemek için kullanılır. Böyle böyle CSS, komut veya başlık etiketleri ve navigasyon gibi özel tutucu olarak KAFA etiketleri ekleyebilirsiniz içeriğin ana gövdesini ekleme gibi oldukça sofistike ve yanı sıra ortak kullanım durumları var.

Açıklamasından basit bir PHP için gitmek istiyorum üstbilgi ve altbilgi çözümü içerir. Bu ortak şablon unsurlardan herhangi tekrarını uygulamak ve kaldırmak daha kolay olacaktır.

Eğer gerçekten Zend Framework öğrenmek için bu kullanmak istiyorsanız dcaunt anlaşılacağı gibi bağımsız modda Zend_Layout kullanabilirsiniz. Siteniz ihtiyaç görünmüyor beri MVC önyükleme sistemini kullanmaya çalışırken hiçbir nokta yoktur. Ben sadece kullanım URL sonra file_get_contents gibi bir şey üzerinden $ düzen-> içerik değişken içine Zend_Layout başlar ve istenen dosyayı yükleyen tek bir PHP dosyasına tüm *. Html istekleri göndermek için yeniden böyle bir şey yapmak () olur

Eğer istediğini o zaman da form işleme için ZF kullanabilirsiniz.

i dont think you can do this by default, i think you need to use the Zend View as well. But i am sure you can modify the Zend_Layout to work with your existing setup. Sorry i cant be more specific on how to do this, because it depends a lot of what is currently in place.

Bir başlangıç ​​noktası olarak ben bunu nasıl değiştirebileceğini görmek için Zend içine Smarty entegrasyonlar bakarak öneririz.