07
Wrzesień
niedziela, 07 Wrzesień 2008

FileBehavior w CakePHP

W nowej wersji 1.2 frameworka CakePHP pojawiło się kilka nowych mechanizmów. Wśród nich zachowania modelów – behaviory. Umożliwiają one przypisanie np. polu tekstowemu nowych właściwości. Pierwszym behaviorem z jakim miałem do czynienia był Image Behavior, który znalazłem na Bakery.

Umożliwia on po odebraniu pliku graficznego z formularza obsługę zapisu według schematu: img/[Model]/[id]/[field_name].jpg. Opcjonalnie można podać rozmiary miniaturek. Zostaną one również wygenerowane w postaci [field_name]_[thumb_name].jpg.

Bardzo przydatne funkcje, ale jednak zazwyczaj przesyłamy zwykłe pliki, np. PDFy. Stąd powstał pomysł na zmianę tego behaviora w taki sposób by umożliwiał przesłanie dowolnego pliku.

Gotowy File Behavior można pobrać stąd:http://www.reboo.pl/files/download/file_behavior.zip

Jego użycie jest niezwykle proste. Wystarczy w tabeli stworzyć pole VARCHAR(255) o nazwie np. document. Następnie w modelu używającym tą tabelę dopisać zmienną $actsAs i wypełnić następującą tablicą:

var $actsAs = array(
			'File'=>array(
				'fields'=>array(
						'picture'=>array(
							'types'=>array('jpg')
							)
						)
					)
);

Klucz “document” jest właśnie nazwą pola. Dodatkowa tablica “types” jest opcjonalna i może zawierać listę dopuszczanych rozszerzeń dla uploadowanych plików.

Tworząc formularz należy pamiętać jedynie o dwóch dość oczywistych zmianach:
- tag form musi mieć ustawiony atrybut enctype na multipart/form-data
- tag input musi być typu file

Plik zapisywany jest podobnie jak w Image Behaviorze tzn.: files/[Model]/[id]/[field_name].[extension]

Dodatkowo po pobraniu danych w modelu pod kluczem z nazwą tego pola dostępna jest tablica asocjacyjna z dwoma kluczami:
- path zawiera ścieżkę do pliku
- type to typ pliku

niedziela, 07 Wrzesień 2008 
Kategoria: CakePHP
Możesz śledzić ten wpis przez RSS 2.0 lub dodać komentarz.
Zostaw komentarz

Home Home O mnie O mnie Efekty
JavaScript, jQuery, AJAX
Efekty
Inspiracje
Ciekawe strony WWW
Inspiracje
Programowanie
CakePHP, PHP, MySQL
Programowanie
SEO
Wyszukiwarki
SEO
Web Building
HTML i CSS
Web Building
Projekty Linki Kontakt Kontakt