Index of /system/plugins/esFormInputFileManyPlugin/
| Name | Last Modified | Size |
|---|---|---|
| 2020-02-26 14:29 | - | |
| 2020-02-26 14:29 | - |
1. Instalacja
1.1 W config/ProjectConfiguration.class.php należy włączyć plugin.
1.2 Wykonać 'php symfony plugin:publish-assets'
1.3 W apps/backend/config/view.yml dodajemy pliki js
/esFormInputFileManyPlugin/js/jquery-ui-i18n.min.js, /esFormInputFileManyPlugin/js/jquery-ui.min.js, /esFormInputFileManyPlugin/js/jquery.bgiframe-2.1.2.js, /esFormInputFileManyPlugin/js/sortable.js
i jeżeli nie jest jeszcze załadowany jQuery
/esFormInputFileManyPlugin/js/jquery.min.js
Jeżeli mamy w do projektu dodany colorbox [http://www.jacklmoore.com/colorbox] możemy również udostępnić funkcjonalność galerii:
/esFormInputFileManyPlugin/js/jquery.colorbox-min.js
/esFormInputFileManyPlugin/js/gallery.js
1.4. oraz pliki css
'/esFormInputFileManyPlugin/css/style.css'
1.5. Aby umożliwić pobieranie sprawne pobieranie plików kopiujemy do /web/ plik esGetFile.php
1.6 wykonujemy php symfony cc
2. Zastosowanie
Plugin zawiera widget i validator.
Dla poprawnego działania widget i validator muszą być zdefiniowane dla pola o definicji longvarchar [albo text]
2.1. esWidgetFormInputFileMany
Używa się go dokładnie jak sfWidgetFormInputFile z tym że:
2.1.1. Opcje wymagane
uploaded - której wartością musi być zawartość pola typu longvarchar (albo text) z bazy, w którym to polu przechowywane są informacje o plikach.
2.1.2. Opcje dodatkowe:
is_image - wpływa na sposób wyświetlania widgetu [dodaje preview obrazków].
path - cieżka do folderu z obrazkami [domyślnie sfConfig::get('sf_upload_dir')]
sortable - czy lista ma być sortowalna [domyślnie true]
Możemy zdeciniować opcje miniaturek
thumb_width - szerokość miniaturki [domyślnie 'auto']
thumb_height - wysokość miniaturki [domyślnie 'auto']
thumb_type - typ miniaturki [domyślnie null] - pomoga utrzymać porządek na dysku, ale utrudnia zmianę rozmiarów
miniaturki dla zdjęc dla których już została wygenerowana miniaturka tego typu. [thumb_type nie musi
występować jako klucz tablicy thumbsToGen przekazywanej do validatora]
thumb_dest - ścieżka docelowa miniaturki [domyślnie null - zostanie wygenerowana z pozostałych parametrów]
2.2. esValidatorFileMany
Używa się go podobnie jak sfValidatorFile
Do walidatora dodana została cała logika. Odpowiada on za usuwanie plików
i dodawanie plików (i oczywiście za walidację) + miniaturki.
2.2.1. Opcje wymagane
fieldName = nazwa pola na którym zakładany jest walidator
NameFormat = zawsze powinien mieć wartość: $this->widgetSchema->getNameFormat()
2.2.2. Opcje dodatkowe:
thumbsToGen = tablica z danymi o miniaturkach do wygenerowania. Tablica ma strukturę
array (
'Typ_miniaturki_1' => array ($szerokosc_1, $wysokosc_1),
'Typ_miniaturki_2' => array ($szerokosc_2, $wysokosc_2),
)
[domyślnie array()]
max_size - maksymalny rozmiar jednego pliku [domyślnie NULL]
mime_types - typ / typy dodawanych plików [domyślnie NULL]
validated_file_class - klasa validująca [domyślnie 'esValidatedFile'] - odpowiada za nadawanie nazw i walidację plików
path - ścieżka do folderu z obrazkami [domyślnie sfConfig::get('sf_upload_dir')]
max - maksymalna liczba plików do dodania za jednym razem [domyślnie 100]
3. Przykład użycia
Mamy klasę Shop z polem image_slider zawierającym galerię.
W ShopForm dodajemy:
3.1. Widget
$this->setWidget(
'image_slider', new esWidgetFormInputFileMany(
array(
'path' => sfConfig::get('sf_upload_dir').'/image_slider/'
,'uploaded' => $this -> getObject() -> getImageSlider()
,'is_image' => true
, 'thumb_height' => 120
, 'thumb_type' => 'sortable_list_thumb'
)
)
);
Miniaturka o typie medium powinna być zdefiniowana w tablicy thumbsToGen przekazanej do validatora
3.2. Validator:
$this->setValidator(
'image_slider', new esValidatorFileMany (
array(
'required' => false
,'max_size' => 500000000
,'mime_types' => 'web_images'
,'fieldName' => 'image_slider'
,'NameFormat' => $this->widgetSchema->getNameFormat()
,'thumbsToGen' => array (
'medium' => array (200, 'auto')
,'small' => array (50, 'auto')
)
,'max' => 50
,'path' => sfConfig::get('sf_upload_dir').'/image_slider/'
)
)
);
4. Na koniec - sprzątanie po sobie
Zaznaczenie checkboxa przy zdjęciu na liście spowoduje fizyczne usunięcie pliku zdjęcia i wszystkich jego miniaturek.
Należy jeszcze pamiętać, aby dodać obsługę usuwania zdjęć do modelu. Aby ułatwić to maksymalnie zostało to dodane do
klasy thumbController. Dzięki niej jedyne co trzeba zrobić to nadpisać metodę delete w modelu, w naszym przykładzie
Shop::delete
public function delete(PropelPDO $con = null){
return thumbController::removeAllThumbs($this -> getImageSlider(), true, 'image_slider')
&& parent::delete($con);
}
5. Klasy techniczne
Klasy thumbController i thumb są bardzo dobrze okomontowane - po informacje dewelopoerskie zajrzyj do nich.
Proudly Served by LiteSpeed Web Server at www.alvowebd.webd.pro Port 443