Zend Framework uygulama için AJAX yapısı için en iyi yol

2 Cevap php

Ben modeli ile etkileşim kontrolörleri ve eylemleri ile, bir AJAX modül hizmeti katmanı sahip düşündüm. Kolay, ama çok genişletilebilir ve KURU ihlal eder. Bazı sürecinin lojistik değiştirirseniz ben AJAX kontrolörleri ve normal denetleyicileri düzenlemek gerekecek.

Yani ideal javascript ve non-javascript kullanıcılar için aynı eylemleri yüklemek olacaktır. Ben belki de ayarlanırsa $_POST['ajax'], ben veri için farklı bir (json'y) görünümü yüklemek istiyorsunuz kontrol düşündüm. Birisi daha büyük bir ajax uygulaması oluşturmak için gerçekten iyi bir şekilde anlatılmaktadır TARİHİ öğretici bir yukarı bana gelin nasıl / bunu yapmak için iyi bir yol (ön denetleyici eklenti sanırım?) Ya da merak ediyordum.

2 Cevap

Aslında bir istek örneğin ajax yoluyla oldu belirlemek için istek nesnesini kullanabilirsiniz:

// from your controller
if($this->getRequest()->isXmlHttpRequest()) {
    // an ajax request, do something special (e.g. render partial view)
} else {
   // render entire view
}

Bu temelde (vb, JS kütüphanesine bağlı olarak, always mevcut değil) x-requested-with başlığı için test ediyor. ('Tespit ajax istekleri' başlığı altında) Bkz:

http://framework.zend.com/manual/en/zend.controller.request.html

Sen XmlHttpRequest başlıkları için kontrol edebilirsiniz. Tüm Javascript kütüphaneleri olsa da, bunu yapmak ve yapılacak hatta olanları mutlaka tüm tarayıcılarda bunu yapmayın.

Temelde $ _POST ['ajax'] senin fikrin değişken benzer "bağlam" isteği denetler, AjaxContext da bulunuyor.

Ne ben aslında yapıyor sona erdi orijinal öneri benzer. Ben bir AJAX modülü hazırlandı. Kontrolör kod çoğaltılması ton önlemek için, ben modellerde tüm işlemleri işleyen bir hizmet katman oluşturdu, bu yüzden benim kontrolörleri giriş istekleri ve ekrana dönüştürmek için gerçekten sadece sorumludur.