Symfony admin generator – optymalizacja zapytań do bazy dla Doctrine

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.

Read more

Prefix w URLach Symfony

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.

Read more

Symfony 1.2 wydane

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.

Read more

svn:externals – czyli jak utrzymać porządek w wersjonowanym kodzie

Tworząc nowy  projekt w Symfony zdecydowałem się na ORM’a Doctrine. Niestety instalacja tej wtyczki nie przebiega standardowo, za pomocą Pake-Taska, ponieważ trzeba zrobić sobie checkouta z repozytorium Symfony. I tutaj pojawił się pewny problem. Ponieważ cały projekt jest wersjonowany przy pomocy SVN’a, to przy każdym wywołaniu, na przykład svn status otrzymywałem:

?   plugins/sfDoctrinePlugin

Dodawanie tej ścieżki do repozytorium nie pomagało, bo pojawiał się komunikat, że ten folder jest już wersjonowany (bo istotnie tak było – przecież zrobiliśmy checkout z repo Symfony). Z pomocą przyszedł svn:externals.

Read more
newer