Symfony od wersji 1.3 posiada obsługę maili dzięki znakomitemu Swift Mailerowi. Mailer ten posiada wszystko to czego się powinno spodziewać po zaawansowanej bibliotece do wysyłki elektronicznej korespondecji m.in. wysyłanie za pośrednictwem różnych transporterów (Sendmail, SMTP), obsługę załączników, szyfrowanie czy zabezpieczanie przed email injection. Dzięki symfony funkcje te zostają dodatkowo rozszerzone o kolejkowanie wiadomości w bazie danych czy wysyłanie emaili z crontaba. Niestety jak dotąd jedyną bolączką Swift Mailera i Symfony jest to, że nie oferują one prostego i wygodnego systemu obsługi szablonów. Dzisiaj pokażę jak stworzyć bardzo prostą klasę, która w podstawowym stopniu powinna zaspokoić potrzeby osoby wykorzytującej mailera symfony.
Posts Tagged ‘Symfony’
Zarządzanie szablonami email w Symfony
symfony project:deploy w trybie verbose
Programiści mający styczność z wersjami symfony wcześniejszymi niż 1.3 pamiętają, że podczas deployment’owania projektu konsola (a dokładnie rsync) działał w trybie verbose. W trybie tym system pokazywał jakie pliki zostały zmienione i nadpisane. Wraz z wejściem symfony 1.3 czegoś takiego domyślnie nie było. Ale ta opcja jest nadal dostępna i zaraz pokażę jak jej używać w wersjach >= 1.3.
Tryb ten jest bardzo przydatny, ale bez niego opcja –dry-run (de facto domyślna) nie ma większego sensu. A o błędzie w synchronizacji i ewentualnie nadpisanym nie tym pliku możemy się przekonać dopiero przy automacie z kawą… ale wtedy jest już za późno.
Podpowiadanie składni w pliku schema.xml
Najnowsze IDE programistyczne takie jak Netbeans czy Eclipse oferują znakomitą funkcjonalność jaką jest podpowiadanie składni wprowadzanego kodu. Programista nie musi znać dokładnie często skomplikowanych poleceń. Wystarczy, że wpisze początek nazwy a IDE automatycznie podpowie składnie. Programiści pracujący z propelem i plikiem schema.xml od dziś mogą się też cieszyć tą funkcjonalnością.
Jeśli pracujemy na Netbeans lub Eclipse (bądź innym IDE oferującym podpowiadanie składni w plikach XML) to na początku pliku schema.xml dodajemy:
Wyszukiwane frazy:
- propel 1 5 (5)
- propel CURRENT_TIMESTAMP (2)
- eclipse podpowiadanie składni (1)
- schema xml (1)
- rekurencja nedbeans (1)
- propel datetime current_timestamp (1)
- propel 1 5 for netbeans (1)
ON UPDATE CURRENT_TIMESTAMP w Propelu
O tym, że Propel dziwnie mapuje typ danych TIMESTAMP do typu DATETIME (MySQL) mówić nie trzeba, bo to można rozwiązać. Co jeśli jednak chcielibyśmy wykorzystać dobrodziejstwo tego typu danych po to, żeby za każdym razem kiedy uaktualniane są dane MySQL wstawiał aktualną datę? Oczywiście nie tykając samego schematu sql. Odpowiedź sprowadza się do dodania odpowiedniej wartości w pliku schema.xml.
W pliku schema w definicji kolumny:
Tak nawiasem to czy ktoś wie dlaczego ostatecznie typ danych TIMESTAMP propel mapuje na DATETIME?
Wyszukiwane frazy:
- current_timestamp (5)
- mysql current_timestamp (4)
- propel schema current_timestamp (2)
- propel symfony and current_timestamp (1)
Podzapytania w Propelu
Propel jest dla mnie wspaniałym ORM, który nieznacznie obniżając wydajność aplikacji bardzo korzystnie wpływa na późniejsze konserwowanie i udoskonalanie kodu. Wiele osób nie lubi propela zarzucając mu właśnie wspomniany przeze mnie spadek wydajności, albo ograniczone możliwości. Nie będę dywagował nad słusznością takich zarzutów, ponieważ w tym poście będzie o czym innym. W tym miejscu chciałbym pokazać jak w Propelu używać podzapytań używając do tego obiektu Criteria…
Sortowanie po ilości wystąpień obiektu
Przypuśćmy, że w bazie znajduje się tabela Article oraz Comments. I teraz chciałbym pobrać wszystkie artykuły i posortować je zaczynając od tego, który ma najwięcej komentarzy i schodząc w dół. Jak to będzie wyglądać w surowym sql.

