Zend Framework

35 posts in category

Zend_Form: walidacja rozbudowanych formularzy

Walidacja rozbudowanych formularzy

Tworząc formularze przy użyciu Zend_From możemy szybko dojść do sytuacji gdzie  standardowy zestaw walidatorów nie spełni naszych potrzeb. Najlepszy przykład to formularz rejestracji i sprawdzanie czy pola "hasło" oraz "powtórz hasło" zawierają identyczne wartości. Albo formularz w którym opisujemy jakieś wydarzenie i wprowadzamy dwie daty: rozpoczęcia i zakończenia. Jak sprawdzić czy pierwsza z dat poprzedza drugą? W takich sytuacjach najczęściej spotykaną sugestią jest "napisz własny walidator". Otóż wbrew pozorom takie rozwiązanie jest skomplikowane i niezbyt przejrzyste. Wynika to z założenia że walidator ma sprawdzać poprawność tylko jednego pola. "Zgodność haseł" czy "poprawna kolejność dat" nie są cechami jednego pola, a raczej całego formularza. Zatem bardziej logiczne wydaje się być rozwiązanie w którym to sam formularz (a nie poszczególne elementy) zajmie się walidacją.

Zend Framework i Doctrine - łatwa integracja

Walidacja rozbudowanych formularzy

Ostatnio zainteresowałem się możliwością zastosowania Doctrine'a w jednym z moich projektów. Znalazłem wiele informacji na ten temat w internecie, niestety w większości zdezaktualizowanych. Okazało się że z wersji na wersję twórcy Doctrine coraz bardziej ułatwiają życie koderom piszącym w ZF. Aktualny przepis znalazłem na stronie ZendCasts. Podczas prób okazało się, że można to wszystko zrobić jeszcze prościej niż proponuje autor, zatem w tym wpisie podam własny przepis, przetestowany z Doctrine 1.2.1 i Zend-em 1.10 beta (1.9 też powinien działać).

Zend_Form i wysyłanie plików - cz. 3

Oto trzeci artykuł dotyczący wysłania plików na serwer przy użyciu komponentu Zend_Form. Tym razem pokażę jak wyświetlić użytkownikowi pasek postępu.

Pasek nie zadziała przy standardowej konfiguracji PHP. Wymagane jest jedno z dwóch rozszerzeń: APC lub uploadprogress. Zend Framework automatycznie wykryje które z nich jest dostępne i użyje go.

Założenia

Chcemy uzyskać prosty pasek pokazujący postęp wysyłania pliku w tle. Niech strona w określonym odstępie czasu (np 1/10 sekundy) wysyła zapytania do serwera, który zwróci żądaną informację.

Podobnie jak w poprzednim artykule przedstawione rozwiązanie musi być elastyczne - niech zadziała także gdy serwer nie obsługuje paska postępu lub gdy użytkownik wyłączy obsługę Java Script.

Podstawą będzie aplikacja napisana w poprzednim artykule.

Przyśpieszyć Zend_Captcha_Image

Ogromną wadą komponentu Zend_Captcha_Image jest jego niska wydajność. Główną przyczyną jest użycie biblioteki GD i czystego PHP do utworzenia i zdeformowania obrazka. Jak obejść ten problem?

Interesującym rozwiązaniem będzie zastosowanie ImageMagick. Rozszerzenie to dostarcza zestaw klas manipulujących obrazkami, a bogaty zestaw funkcji pozwoli na uzyskanie efektu podobnego do Zend_Captcha_Image. Ta ostatnia klasa zostanie wykorzystana jako baza, co bardzo ułatwi proces kodowania.

Zend_Navigation: menu z ikonkami

Zend Framework pozwala na łatwe wyświetlenie systemu nawigacji przy pomocy helpera Zend_View_Helper_Navigation_Menu:

<?php echo $this->navigation()->menu(); ?>

Zgodnie z tym co możemy wyczytać w manualu, powyższy kod wygeneruje menu oparte na tagach <ul> i <li>. W jaki sposób otrzymać coś bardziej skomplikowanego, na przykład menu z ikonami przy każdej pozycji?

Osadzanie filmów z YouTube i DailyMotion

Logo YouTubeWitam ponownie po nieco długiej, wakacyjnej przerwie. Dzisiaj przedstawiam kod który pozwoli łatwo i szybko osadzić na naszej stronie filmik z serwisów YouTube czy DailyMotion (jednocześnie bardzo łatwo można go rozszerzyć o inne strony hostujące wideo).

Problem można podejść na kilka sposobów jednak najbardziej elegancki to napisanie pomocnika widoku (Zend_View_Helper_*).

Zend Framework Workshop - prezentacja

Matthew Weier O'Phinney jest aktualnym szefem projektu Zend Framework. W internecie znajduje się wiele przygotowanych przez niego materiałów szkoleniowych, gdzie prezentuje rozwiązania konkretnych problemów. Oprócz tego sporo miejsca poświęca problemom teoretycznym (na przykład jak zdefiniować "model biznesowy" w naszej aplikacji). Niedawno natknąłem się na jego prezentację pt. Zend Framework Workshop.

Workshop to próba streszczenia w 165 slajdach jak działa Zend Framework oraz przedstawienie kilku teoretycznych koncepcji. Lekturę polecam wszystkim - zarówno początkujący jak i zaawansowani programiści ZF powinni znaleźć tam coś ciekawego.

Zend_Navigation: przyjazne linki

Wyobraźmy sobie następujący kontroler:

class UserController extends Zend_Controller_Action
{
    public function loginAction()
    {
        (...)
    }

    public function registerAction()
    {
        (...)
    }
}

Chcielibyśmy aby użytkownik miał dostęp do tych akcji po wpisaniu "przyjaznych" adresów: domena.com/logowanie i domena.com/rejestracja. Jak uzyskać takie nazwy? Można zmienić nazwę kontrolera i akcji, można też dodać trasy statyczne (Zend_Controller_Router_Route_Static). Są to mało elastyczne rozwiązania, które można zastosować jedynie w prostych aplikacjach. Lepsza metoda to odpowiednie wykorzystanie komponentu Zend_Navigation, dostępnego w ZF począwszy od wersji 1.8.

Zend_Auth - uwierzytelnianie w Zend Framework

Tak jak obiecałem poprzednio, w tym artykule zaprezentuję działanie Zend_Auth na kilku przykładach.

Zend_Auth umożliwia programiście trzy podstawowe działania: sprawdzanie czy użytkownik podał właściwy login i hasło (uwierzytelnianie), sprawdzenie czy w danej chwili użytkownik jest zalogowany ("czy posiada tożsamość") oraz wylogowanie użytkownika ("wyczyszczenie tożsamości").