Symfony sfWidgetFormSelect with disabled options
Napisane przez wowo | Kategorie: Symfony, php, webdev
The sfWidgetFormSelect doesn’t provide ability to render disabled options. It’s rarely used feature of a HTML select element, but sometimes it could save your life :-) In fact, we can achieve this feature by creating our own widget, like one listed below, which inherits from sfWidgetFormSelect. This solution is inspired by problem posted on Symfony Experts. Czytaj resztę wpisu »
Tagi: php, sfWidgetFormSelect, Symfony, widget
Which convention is more common “static public function” or “public static function” (based on Symfony and Doctrine)
Napisane przez wowo | Kategorie: Linux, Symfony, php, webdev
Few minutes ago Brent Shaffer asked on the Twitter
Which is more standard, “public static function” or “static public function”?
I was curious about it, so I’ve checked which convention is used in my favourite Symfony Project. Of course, I haven’t got enough time to check it manually, class by class, so I wrote simple bash script:
egrep "^[^\*/]*static.*function" /usr/share/php/symfony/ -rioh --include=*.php | sed 's/^\s*//g' | sort | uniq -c | sort -r
The answer for the Symfony 1.2 was:
685 public static function 181 static public function 27 static protected function 16 protected static function 16 private static function 11 static function 2 abstract public static function
I’ve done same thing for Doctrine ORM Project
egrep "^[^\*/]*static.*function" /usr/share/php/Doctrine/lib/ -rioh --include=*.php | sed 's/^\s*//g' | sort | uniq -c | sort -r
and the result was:
78 public static function 6 static public function 6 static protected function
Now I can tell that “public static function” is more common, and by the way I use same convention in my classes :-)
Tagi: bash, Doctrine, php, scripting, Symfony
PHP 5.3 ujrzało światło dzienne
Napisane przez wowo | Kategorie: Ogólne, firefox, php, webdev
Dzisiaj światło dzienne ujrzała kolejna odsłona jednego z najpopularniejszych języków skryptowych – PHP oznaczone wersją 5.3. Wersja ta jest znacząca w rozwoju PHP, będąca swego rodzaju pośrednikiem pomiędzy wersją 5 a 6. Główne funkcjonalności wprowadzone w PHP 5.3 to: Czytaj resztę wpisu »
Import użytkowników z hasłami w md5 do sfDoctrineGuardPlugin
Napisane przez wowo | Kategorie: Symfony, php
Import użytkowników z zewnętrznej tabeli do pluginu sfDoctrineGuardPlugin dla Symofny, nie jest taki prosty na jaki wygląda na pierwszy rzut oka. Wydawałoby się, że wystarczy w pętli tworzyć obiekt klassy sfGuardUSer, ustawiać username i password dla niego oraz wywoływać metodę save(). Nic bardziej mylnego. SfDoctrineGuardPlugin do przechowywania haseł używa hasha tworzonego na podstawie soli (salt), dzięki temu zwiększa się bezpieczeństwo. Dodatkowo domyślnie używanym algorytmem jest sha1, a nie popularny md5, stosowany z zapałem przez wielu programistów PHP. Cały problem polega na tym, że plugin przy tworzeniu nowego obiektu, generuje sól (chyba, że podamy własną) i nie przyjmuje do informacji, że ustaliliśmy jej wartość NULL. Małym pocieszeniem jest fakt, że możemy własnoręcznie ustawić dla rekordu algorithm na md5, ale mimo wszystko po ustawieniu hasha do atrybutu password, zostanie on połączony z solą i ponownie zahashowany, co rozwali wszystkie nasze hasła.
Aby temu zapobiec, należy stworzyć klasę ImportsfGuardUser i umieścić ją w lib/ (nie zapomnij wyczyścić cache symfony):
Czytaj resztę wpisu »
Tagi: Doctrine, php, sfDoctrineGuardPlugin, Symfony
Symfony admin generator – optymalizacja zapytań do bazy dla Doctrine
Napisane przez wowo | Kategorie: Symfony, php
Ostatnio w projekcie Symfony 1.1 z użyciem Doctrine, dzięki webdebug toolbarowi, dostrzegłem czegoś, co mnie przeraziło. Otóż, jeśli w wygenerowanym przez Symfony adminie mamy klucze obce na liście, to wywoła on tyle zapytań ile elementów * ilość kluczy obcych.
Tagi: admin generator, Doctrine, php, Symfony
Prefix w URLach Symfony
Napisane przez wowo | Kategorie: Symfony, php
Jeśli z jakiegoś powodu potrzebujesz prefixu w url’u generowanym przez routing Symfony (lub w szczególności go tam nie potrzebujesz a pojawia się z powodu nietypowej konfiguracji serwera), można to osiągnąć w bardzo prosty sposób. Wystarczy w pliku apps/nazwa_aplikacji/config/factories.yml w sekcji all wpisać:
all:
request:
class: sfWebRequest
param:
relative_url_root: -
Powyższy kod usunie zbędny prefix. Zamiast myślnika można wpisać dowolny ciąg znaków, będzię się on pojawiał w postaci: http://twojserwer.pl/twoj_prefix/nazwa_aplikacji.php/modul/akcja. Ten trick może być też potrzebny jeśli symfony jest zainstalowane w podkatalogu wirtualnego hosta.
TCPDF – polskie czcionki
Napisane przez wowo | Kategorie: php
Jeśli potrzebujemy (a na pewno tak będzie) polskich czcionek w dokumentach PDF generowanych przez php’ową bibliotekę TCPDF, można to osiągnąć w prosty sposób: czcionkę z polskimi znakami, np windowsowy Courier, zapisujemy jako cour.ttf na serwerze, a w pliku, który będzie generował pdf’a:
require_once('tcpdf.php');
$pdf = new TCPDF('L', 'mm', 'A4', false, 'iso-8859-2');
$pdf->SetFont('cour');
z konsoli natomiast wydajemy odpowiednie polecenia (będąc w katalogu TCPDF’a):
ttf2afm cour.ttf > cour.afm php fonts/utils/makefont.php cour.ttf cour.afm cp1250 cp cour.* fonts/
I cieszymy się polskimi znakami w PDF’ach :-)
Tagi: pdf, php, polskie czcionki, polskie fonty, polskie znaki, tcpdf
Usuwanie pustych tagów html
Napisane przez wowo | Kategorie: php
Dzisiaj krótka recepta, na pozbywanie się z tekstu pustych tagów html. Jest to przydatne na przykład gdy używamy TinyMCE, który czasami poza naszą kontrolą wstawia tagi, które mają w CSS’ie ustawiony margines lub padding – wtedy tekst będzie nienaturalnie porozciągany w takich miejscach. Aby to osiągnąć, skorzystamy z funkcji preg_replace i odpowiedniego wyrażenia regularnego.
Tagi: backreference, php, puste tagi, regexp, wyrażenia regularne
Symfony 1.2 wydane
Napisane przez wowo | Kategorie: Symfony, php
Najlepszy, moim zdaniem, framework PHP Symfony doczekał się stabilnej wersji 1.2. W najnowszej odsłonie, znajdziemy między innymi 2 równoległe ORM’y – propel w wersji 1.3 oraz Doctrine 1.0 – do wyboru. Tym samym Doctrine weszło do Core Symfony, co bardzo dobrze wróży na przyszłość. Poza tym, z okazji wydania wersji 1.2 rusza projekt Jobeet będący 24-odcinkowym tutorialem, pokazującym krok po kroku tworzenie aplikacji w Symfony. Jest to następcą Askeeta, który został stworzony pod Symfony 1.0, które powoli odchodzi na emeryturę :-) Polecam ten kurs na początek – bardzo fajnie zapozna każdego laika z frameworkiem.
Do tego polecam też lekturę dokumentacji:http://www.symfony-project.org/doc/1_2/, możemy w niej znaleźć między innymi książkę Definitive Guide to Symfony, książkę na temat Formularzy oraz Doctrine.
Tagi: Doctrine, framework, php, Symfony
Prosty skrypt zwalczający spam
Napisane przez wowo | Kategorie: php, webdev
Pewnie nie jednemu programiście aplikacji webowych zdarzyło się, że po wystawieniu swojej księgi gości na świat, po paru dniach znajduje na niej kilkanaście spamowych wpisów. Ja również doświadczyłem tego ostatnio. Większość w takim przypadku decyduje się na zastosowanie CAPTCHA, czyli obrazka z zdeformowanym tekstem, który użytkownik musi podać przy dodawaniu posta. Jest to rozwiązanie średnio przyjemne, coraz mniej skuteczne i bardzo odstraszające potencjalnych gości, którzy są ludźmi. Postanowiłem więc napisać prosty filtr (w tym przypadku został on akurat wykorzystany jako validator w Symfony), który będzie wyszukiwał słowa, które na 99% znajdą się tylko w niechcianych wiadomościach. Czytaj resztę wpisu »



