Archiwum tagów: Symfony2 - Strona 2

sqlite w środowisku developerskim w symfony i symfony2

Sqlite nie koniecznie jest dobrą bazą produkcyjną dla tworzonych aplikacji internetowych. Jednak podczas ich tworzenia powinna nadać się idealnie. Tym bardziej, jeśli nie chcemy naszej maszyny developerskiej obarczać dodatkowymi procesami, czy też pilnować włączania/wyłączania serwerów bazy danych, sqlite nada się idealnie.

Symfony2: Importowanie danych mapowania encji z filtrowaniem wyrażeniami regularnymi.

Witajcie! Ze względu na to, że ostatnio mam coraz więcej wspólnego z Symfony2, możecie spodziewać się nieco więcej wpisów o tym frameworku na niniejszym blogu. Założyłem już kategorię „Symfony2″, a znajduje się w niej raptem jeden wpis, także czas nadrobić … #LINK#

Pobieranie dokumentów MongoDB poprzez @ParamConveter

Symfony2 w swojej standardowej dystrybucji posiada zainstalowaną i skonfigurowaną paczkę SensioFrameworkExtraBundle. Dorzuca ona do Symfony kilka wygodnych anotacji adnotacji, dzięki którym bezpośrednio w przypisach kontrolera możemy definiować Routing, Cache, Szablon widoku oraz konwertować parametry routera na encje bazy danych przy pomocy @ParamConverter.

Podczas pisania bundla Notyfikacji dla Symfony2 stwierdziłem, że skorzystam z tego mechanizmu do pobierania danych z MongoDB. Szybki research pokazał mi, że kiedyś była taka możliwość, jednak jeszcze przed wydaniem SF2 Fabien wyrzucił tą funkcjonalność kosztem możliwości skonfigurowania własnego Entity Managera, z którego jest pobierany obiekt Doctrine ORM.

Pozostało mi nic innego jak zgodnie z sugestią napisać swój własny @ParamConverter i skonfigurować jego serwis w odpowiedni sposób. I nie było by w tym nic super trudnego gdyby nie fakt, że prawdopodobnie znalazłem błąd w samym frameworku, który powodował globalne przerwanie procesu konwersji w przypadku nieznalezienia „Entity namespace alias”, a przecież w moim konkretnym przypadku chciałem skorzystać z Document Managera i co mnie obchodzi, że akurat w tym bundlu nie ma zdefiniowanych encji? ;)

Email jako login w Symfony 2

Email jako login jest często spotykaną funkcjonalnością na stronach internetowych. Jest to wygodne rozwiązanie, ponieważ email jest łatwiejszy do zapamiętania niż często losowy nickname wybrany na potrzeby strony. Inna sprawa, że często sama „nazwa użytkownika” nie jest do niczego potrzebna. Implementując tą funkcjonalność w ostatnim projekcie dowiedziałem się, że nie jest to trudne, a samo Security w Symfony 2 jest wstępne skonfigurowane do ułatwiania życia programiście.  

Integracja Twitter Bootstrap z projektami Symfony2

Bootstrap is a toolkit from Twitter designed to kickstart development of webapps and sites. It includes base CSS and HTML for typography, forms, buttons, tables, grids, navigation, and more.
To tylko w kwestii rozjaśnienia tematyki osobom niezaznajomionym, po więcej informacji odsyłam na  DevBloga Twittera i oficjalne demo Bootstrapa. Około 2 miesiące temu rzeczony projekt narobił w sieci dość sporo zamieszania, po tym okresie czasu myślę, że można już na chłodno ocenić jego przydatność i stabilnie używać w większych projektach (trochę błędów zostało poprawionych ;) ). A dodatkowo wydana została JavaScriptowa część Bootstrapa.

Beanstalk w Symfony2

Beanstalk to bardzo prosta i szybka kolejka wiadomości. Jest świetnym rozwiązaniem, aby wykonywać długo trwające żądania użytkownika (do tego został zresztą zaprojektowany).  Doskonałym przykładem kiedy powinno się użyć kolejki wiadomości, to np. masowe wysyłanie wiadomości do użytkowników systemu (e-mail, sms). Pojedyncza operacja wysłania wiadomości do użytkownika nie jest złożona i zajmuje najwyżej kilka sekund. Jednak przy wysyłaniu wiadomości do kilkuset tysięcy użytkowników, czas obsługi żądania jest zbyt długi, żeby ktokolwiek w rzeczywistości mógł wykonać treść żądania przed zakończeniem połączenia HTTP. Oczywiście można kolejki obchodzić na różne sposoby (crond, pooling bazy danych). Pytanie tylko w jakim celu utrudniać sobie życie?  Komunikacja z serwerem kolejek beanstalk odbywa się poprzez TCP i wymianę danych ASCII, a do komunikacji powstała cała masa bibliotek w wielu językach programowania.  

Symfony 2 – Listener logowania użytkowników

Z małym poślizgiem kontynuujemy poznawanie usług w Symfony 2. Dzisiaj kolejna prosta usługa, która będzie zapisywała timestamp do rekordu użytkownika w momencie, kiedy będzie logował się do aplikacji. Konfiguracja security.yml nie ma tutaj znaczenia. Ważne, by providerem było Doctrine. Kolejna kluczowa kwestia, to pole encji Usera, w którym będziemy zapisywać ten czas. Ustawiamy domyślnie jako null dla użytkowników, którzy jeszcze się nie logowali.    

Moja prezentacja o Symfony2 i dedykowanym oprogramowaniu z InternetBeta 2011

Poniżej slajdy z mojej prezentacji, którą wygłosiłem na InternetBeta 2011 w Rzeszowie. Zapraszam do zapoznania się z slajdami. Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i dlaczego framework Symfony2 pasuje tu jak ulał? View more presentations from Wojciech Sznapka

Zarządzanie konstrukcją obiektów w PHP z komponentem DependencyInjection Symfony2

Komponent DependencyInjection Symfony2 to PHPowa implementacja kontenera usług (z ang. Dependency Injection Container). Dodatkowo, komponent zawiera kilka przydatnych narzędzi, pozwalających na import i eksport definicji w różnych formatach (np XML).

Dostęp do kontenera dependency injection z klasy repository

Użycie KnpPaginatorBundle do stronicowania rekordów jest bardzo dobrym pomysłem. Jednak pokazany w dokumentacji przykład jest zapisany w kontrolerze. Zapewne spora część osób wolałaby pobieranie danych z bazy danych zawrzeć w plikach modelu. W tym wypadku w pliku repository dla danego entity. Problem jest z dostępem do serwisu paginatora – domyślnie kontener DI nie jest dostępny z klasy repozytorium.