2010-05-27 25 views
13

'daki web uygulamam için bir mobil sürüm oluşturuyorum Yeni bir web uygulaması geliştirmek için CodeIgniter kullanıyorum ve kullanıcıların telefonlarından ziyaret ettiğinde yönlendirmeleri gereken bir mobil sürüm oluşturmak istiyorum.CodeIgniter

Uygulamanın mobil sürümü farklı bir akışa sahip olmalıdır, bu nedenle koddaki CSS/HTML dosyalarını değiştirmek benim için bir seçenek değildir, çünkü mobil sürüm ve web sürümü, Denetleyicileri ve Görünümleri'nde işleri farklı şekilde ele alacaktır. Aynı modelleri paylaşıyor.

Neyse, bunu nasıl verimli bir şekilde yapabilirim?

Yardımınız çok takdir edilmektedir. :)

cevap

4

, size Biz bu CI's wiki page ve işe yarıyor aşağıdaki yaptık PHP4 veya 5.

kullanıyorsanız bağlı olarak juste bir veya iki CodeIgniter çekirdek modifikasyonu ile bu kurulum yapabilirsiniz Harika, modelleri, kütüphaneleri, konfigürasyonu paylaşıyoruz. Aynı lib/config ortak sınıflar ya da uygulamaya özgü) için mevcut olup olmadığını yükleme önceliğini uygulayabilirsiniz yükleyiciler geçersiz kılarak

/application/ 
    /common/<similar to application directory, but used for shared libs/helper/models/configs files> 
    /frontend/<similar to application directory> 
    /backend/<similar to application directory> 
/system/ 

: Temelde böyle bir proje organizasyonu var. Ayrıca tüm ortak kodları (denetleyiciler, belirli yönlendirme sınıfı vb.) Taşıyabilir ve uygulamalarınıza yalnızca uygulamaya özgü aşırı yüklemeleri kaldırabilirsiniz.

Sonunda, her uygulama için bir tane olmak üzere iki Ön Kontrol Cihazı (çoğunlukla index.php dosyasıyla aynıdır) elde edersiniz ve ziyaretçileri URL yeniden yazma, belirli bir alt etki alanı vb. Ile filtreleyebilirsiniz.Eğer PHP4 çalışan sunucular hedefliyorsanız

, bunu

başka geçerli bir alternatiftir (bir yükleme sorunu olduğunu değişiklik yapılmadan) işe almak için çekirdek sınıfları değiştirmek için ne olduğunu görmek için CodeIgniter'ın forumlarında this thread açıldı, ancak Henüz kullanmadım, HMVC organisation

+0

Harika! istediğim gibi geliyor, teşekkürler. Ancak, 'frontend' veya 'backend' klasörlerindeki denetleyicilerin birinde 'genel' bir modelin nasıl yükleneceği konusunda hiçbir fikrim yok. Bu nasıl yapılır? – KeyStroke

+0

Dün gece bunu düşündüm, bu benim cevabımdaki eksik nokta, CI_Loader sınıfını abartmanız gerekiyor, bu yüzden ti, App yolundan önce ortak yoldaki model/yardımcılar/kütüphaneler/config için arama yapar. Kurulumumuzda, APPPATH sabiti ön denetleyicide değiştirildi ve aynı şekilde bir COMMONPATH ekledik. – Benoit

+0

Teşekkürler. Son bir küçük bit: Aynı URL'leri kullanmaları gerekiyorsa uygulamalar arasında nasıl geçiş yapmanızı önerirsiniz? index.php dosyasında ajan saptamasını ve ardından bir çerez mi ayarlıyorsunuz? ya da başka bir yol? – KeyStroke

1

Çözüm: (a): Küresel denetleyicisi

  • Kontrol kullanıcı istemci sürümünü temel
  • Yük kontrolörleri mobil veya masaüstü istemcisi kullanıyorsa (controller_default.php/controller_mobile.php)
  • iki kez
  • Görüntüleme farklı klasörlere

Not saklanabilir tüm müşteriye özel şeyler yapın: (a) başvurunuz zamanla büyürse dağınık olur.

Çözüm (b):

  • Değiştir index.php istemci dayalı farklı uygulama klasörleri yüklemek için paylaşılan bir klasör

Herhangi içinde

  • saklayın modeller/yapılandırmaları/kütüphanelerini kullanılan Yukarıdaki CI çerçevesinin gerekli (kapsamlı?) modifikasyonu. Daha sonra güncelleştirmek için mevcut sınıfların (MY_Controller vb.) Üzerine yazarak mümkün olduğunca fazla çalışın. Eğer gerçekten 2 bağımsız uygulamalar gerekiyorsa

  • +0

    kullanıyor Her ikisi de mümkün, orta ila büyük web sitesi için çözüm b'yi tercih ediyorum (10'un üzerinde kontrolör metodu). Aslında çerçeve modifikasyonu gerektirir, ancak CI çekirdek sınıflarına aşırı yükleniyorsanız bunlar çok sınırlıdır. – Benoit