Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [zend framework] mini-scaffolding :)
Forum PHP.pl > Forum > PHP > Frameworki
MarcinTryka
Witam.
Od jakiegoś czasu piszę panele administracyjne pod ZF. Chciałbym to bardziej zautomatyzować (zmniejszyć czas podpięcia danego panela pod podobną witrynę). Mam np. bazę produktów -np motocykli:

id, // auto_inctrement, primary key
lp, // numer porządkowy / kolejność
kategoria // integer, odnosi sie do kategorii, foregin key
marka // varchar
poj silnika // integer
kolor // varchar
opis // text

No i chciałbym to podpiąć pod bazę z np. samochodami, mam dodatkowo np.:

liczba drzwi //int
skrocony_opis // mediumtext ("nagloewk")

Muszę zmieniać:
1) bazę danych
2) formularz
3) walidację danych
4) zapis do bazy
5) odczyt z bazy (edycje, przeglądanie w panelu)

Moim marzeniem byłoby zrobienie czegoś na wzór scaffolding (dostępny np. w CakePHP). Polegałoby to na tym, że:
1) pola id, lp, kategoria są wspólne dla każdego z paneli - one są zaimplementowane ręcznie
2) pozostałe kolumny tabeli automatycznie odczytuje ZF z bazy i tworzy dla nich formularz:
BOOL - checkbox
integer,varchar - input
mediumtext -textarea
text -textarea+edytorek

Ponadto dodatkowo automatycznie dostosowuje funkcje zapisu/odczytu z bazy, oraz walidację.
Dzięki temu dopasowanie panela do konkretnej strony sprowadzało by się do utworzenia odpowiedniej tabeli.
Moje pytania:
a) jak w ZF pobrać nazwy kolumn w tabeli
cool.gif jak pobrać typy danych (VARCHAR, INTEGER, TEXT ...)

Pozdrawiam, Marcin
phpion
Od razu zaznaczam, że nie znam ZF i nie wiem czy taka możliwość nie została już wbudowana.
Może użyj po prostu:
  1. DESCRIBE tabela;

i wybierz te dane, które Cię interesują.
Sabistik
To nie jest takie trudne obecnie. Dzięki Zend_Form i Zend_Db_Table można łatwo zrobić coś w tym stylu. np jakąś metodę getForm:

  1. <?php
  2. $info = $this->info();
  3. $metadata = $info['metadata'];
  4.  
  5. foreach ($metadata as $columnName => $columnDetails) {}
  6. ?>


W forechu tworzysz po kolei elementy formularza i na koniec metody zwracasz całego forma. W $columnDetails['DATA_TYPE'] masz typ danych.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.