Zend_Form kullanarak veritabanından doldurmamak seçer

1 Cevap php

Zend_Form parçası olan seçkin bir elemanı doldurmak için en iyi yolu nedir?

Çeşitli form elemanı değerleri doldurmak için populate() kullandım ama select ifadeleri nüfuslu alamadım.

Aşağıdaki gibi ama sanıyorum ideal değil çalışır Benim çözüm şudur:

MyForm Ben bir veritabanı arama yapmak ve gerekli verileri almak (Zend_Form uzanan) ve init() yöntemde.

$opt = Zend_Registry::get('dbAdapter');
$sql = 'SELECT DISTINCT foo FROM bar';
$res = $opt->fetchAll($sql);
$flat = $this->flattenArray($res); //this flattens the array and 
                                   //sets the keys to equal the values

Bu noktada ben $flat doğru seçin elemanının çoklu seçenekler değere geçmek. Form doldurulur gerekiyorsa kontrolör, bir görünüm için formu aldığında Sonra, ben onu doldurmak arayın ve her şey düzgün nüfuslu görünür.

Bazı sorunlar görüyorum: bu formu kullanılır her zaman çağrılan yüzden Önce formun init() yönteminde bu veritabanı çağrı var. İkincisi, sonra ben populate kullanmak için ikinci bir bağlantı yapmak seçme elemanı doldurmak için açılmış bir veritabanı bağlantısı var.

Tüm bu yapmak için daha iyi bir yolu nedir? Ben bir veritabanı bağlantısı yapmak ister ve her şeyi doldurmak için populate kullanımı ve benim denetleyicisi içinde her şeyi yerine genişletilmiş form sınıf ve denetleyici arasındaki bölünmüş olur. Bu iyi bir yaklaşım mı? Bu benim ısmarlama bir çözümdür ve bu çalışıyor ama ben çok ideal olduğunu BİLİYOR

(BTW, yalnız ve izole bir konumda ben bir soru sormak için bir meslektaşım kapma sanki, böyle bir soruyu sormak StackOverflow edememek çalışan birisi olarak, benim için çok yararlıdır ... teşekkürler)

1 Cevap

Ben ne sonra konum% 100 emin değilim. Ben sizin örnekte SQL arama bir sayfa görünümü için birden çok kez idam olduğunu yorumlamak ve bunu sevmiyorum?

Sizin için seçme içeriğini önbelleğe

  • init fonksiyonunda veya sınıfta bir statik değişkeni ile sayfa görünümü.
  • bir oturum değişkeni olarak kullanıcı.
  • Tüm kullanıcıların bu nasıl üretildiğini dinamik bağlı Zend_Cache dosyası veya memcache için.