Bir CMS geri alma ve Önizleme

3 Cevap php

Ben bir CMS oluşturma ve ince iş gibi görünüyor, yayınlamak ve geri alma işlemek için serialize kullanıyorum. Temel olarak, normal bir site tablolar görüntülenir alır ve gösterilen bir şey değil, ayrı bir tabloda tefrika ne vardır. Sorun ancak 'Preview' fonksiyonları çalışmaz hale olduğunu.

Ön uç, normal bir SQL çağrıları kullanılarak oluşturulan ve tüm geri pre-published/rolled veriler ayrı bir tabloda olduğundan beri bu önizleme doğru versiyonunu çekmek için bazı fantezi kod ile her sql deyimi güncellenmesi anlamına gelecektir. Ayrıca limitleri vb gibi şeyler, özellikle sorunlu alacak ve ön ucu için bir kabus olurdu.

Görebildiğim yalnızca diğer yaklaşım önizleme kopyası için ayrı bir veritabanı / tablo (lar), fakat birçok kişi önizleme işlevini kullanıyor olabilir ve çok hızlı bir şekilde alacak gibi ben önizleme kullanarak her kişi için bir yinelenen veritabanı oluşturmak için nefret duyuyorum yandan dışarı.

Önizleme izin ve önizleme geri alma, ancak veritabanının içeriğini görüntüler ve aynı zamanda kitle çoğaltılması sorunu önlemek koddan çok gerektirmez olacaktır, bunu yapmanın bir yolu var mı?

3 Cevap

Ben onun durumuna göre 1'den fazla tabloda içerik verilerini saklamak gitmek için yol olduğundan emin değilim.

Ben amaç içeriğin durumunu (eski sürüm, güncel sürümü, şu anda düzenlenmekte olan, içerik düzenleme iş akışı bağlı istersen) ayarlamak olacaktır alanına sahip, aynı tabloda içeriğin her sürümünü saklamak istiyorsunuz. Durum alanında artı bir tarih tarih bu tür yönetmek için içerik sürümleri yolu kolaylaştıracaktır.

Ben çeşitli uygulamalar için bu yöntem kullanılır ve her zaman kurtulma, önizleme ve daha karmaşık şeyler (cvs gibi sözde şube, ...) uygulamak için ne kadar kolay memnun oldu.

Ne eWolf anlamı ayrı bir modeli var ve görüntülemek zaman size modeli görünümüne farklı veri temin olabilir ve sonra da veritabanını kopyalamak gerekmez, ancak bunun yerine sadece standart ve bir önizleme model oluşturmak olduğunu.

Önizleme modeli veritabanı sorgularını yapmak zorunda ama bunun yerine görünümüne geçirmeden önce onu saklamak veriyi teslim etmez.

Bu örneği ele alalım:

//in the controller:
$previewPage->setTitle("foo");
...
//in the view(when previewing):
$previewPage->getTitle(); // returns whatever you stored beforehand

//in the view(regular viewing):
$livePage->getTitle(); // queries the database and returns the result

Eğer this makale kontrol etmek isteyebilirsiniz Model-View-Controller desen hakkında daha fazla bilgi için.

Umarım yardımı olur.

Eğer ayrı Model, View ve Denetleyici, bu hiçbir sorun olmalı: Sadece denetleyicisi başka bir yerden modelini almak ve görünümüne geçmek.