Blog archives

53 posts in the archive

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?

Usuwanie znaków diakrytycznych

Polskie znaki diakrytyczne (akcentowane) potrafią przysporzyć spoko kłopotu podczas tworzenia aplikacji internetowych. Upowszechnienie standardu UTF-8 pozwoliło rozwiązać pewne problemy, jednak nie wszystko poprawnie obsługuje to kodowanie. W niektórych przypadkach (nazwy plików na serwerze, przyjazne URL-e...) lepiej sprawdzają się nazwy składające się wyłącznie z liter z alfabetu łacińskiego. W jaki sposób najlepiej zamienić polskie znaki (ą, ć, ę...) na ich łacińskie odpowiedniki (a, c, e...)? Sposobów jest co najmniej kilka.

Praktyczne okienko informacyjne

Często zachodzi potrzeba poinformowania użytkownika o sukcesie bądź niepowodzeniu jakiejś operacji, takiej jak zapisanie artykułu, wysłanie kometarza itd. Takie informacje można zaprezentować na kilka sposobów, jednak zazwyczaj będą one umieszczone statycznie gdzieś w górnej cześci strony.

Przy okazji pracy nad pewnym projektem postanowiłem podejść do tego tematu w niestandardowy sposób: po zapisaniu artykułu użytkownik zobaczy informację na środku strony, w ładnym okienku które samo zniknie po kliku sekundach. Jednocześnie rozwiązanie jest odporne na wyłączoną obsługę Java Script - w takim przypadku zostanie wyświetlone powyżej treści strony.

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.

Wyświetlanie Google Maps w IE6/IE7

Google Maps potrafi sprawić wiele problemów użytkownikom starych przeglądarek Microsoftu. Zwłaszcza jeśli strona do której mamy je dodać jest oparta na nie walidującym się układzie tabelkowym. Przedstawiam dwa problemy które musiałem ostatnio rozwiązać.

Po otwarciu strony w IE6/7 pojawiła się przesunięta mapka:

Bezpośrednią przyczyną była najprawdopodobniej niedomknięta tabelka. Najlepszym rozwiązaniem jest posprzątanie kodu strony, co może być jednak nieopłacalne ekonomicznie dla naszego klienta.

Na szczęście istnieje prosta sztuczka którą możemy się posłużyć.

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").

Uwierzytelnianie i autoryzacja w Zend Framework

Zend Framework jest bardzo elastycznym narzędziem, dlatego nie narzuca konkretnej metody zarządzania użytkownikami. W zamian oferuje dwa komponenty - Zend_Auth i Zend_Acl - które musimy jakoś połączyć z naszą aplikacją. Może to sprawiać problemy początkującym, gdyż dokumentacja rzuca ich od razu na głęboką wodę, a w internecie nie można znaleźć zbyt wielu przykładów. Sam potrzebowałem sporo czasu aby zrozumieć i opanować te zagadnienia.

Zend_Gdata_YouTube, ZF 1.8.2 - brak wstecznej kompatybilności

Ostatnio w pewnym projekcie uaktualniłem Zend Framework do wersji 1.8.2 i zostałem niemile zaskoczony. Projekt wyszukuje filmiki z YouTube, wykorzystując do tego komponent Zend_Gdata. Po aktualizacji przestał działać.

 

Dokumentacja ZF zawiera mniej więcej taki przykład wyszukiwania filmów:

 

$yt = new Zend_Gdata_YouTube();
$query = $yt->newVideoQuery();
$query->videoQuery = 'tytuł filmiku';
$videoFeed = $yt->getVideoFeed($query);

Niestety od wersji 1.8.2 ten kod nie jest poprawny i generuje wyjątek. Przykład w manualu nie został zmieniony, a informacja o wydaniu nic nie wspomina o zmianach w Zend_Gdata.  Na szczęście problem jest prosty do rozwiązania.