Sztuczki w Symfony
Dzisiaj garść sztuczek, które wykorzystuje w mojej codziennej pracy z Symfony. Może okażą się komuś pomocne:
Pobierz wartość z konfiguracji
$wartosc = sfConfig::get("app_sekcja_zmienna");
Pobiera wartość z pliku /apps/current_appname/configs/app.yml, który winien wyglądać tak:
all: sekcja: zmienna: wartość
Istnieje możliwość dalszego zagłębiania sekcji, np.
all: sekcja: podsekcja: zmienna: wartość
Ale wówczas należy skorzystać:
$temp = sfConfig::get("app_sekcja_podsekcja); $wartosc = $temp["zmienna"];
Logowanie do debuggera Symfony
W Symfony można logować dowolną wartość, która później wyświetla się w pasku debuggera -> logs. W kontrolerze można skorzystać z:
$this->logMessage("Twój debug");
W innym miejscu, np. w modelu można skorzystać z:
sfContext::getInstance()->getLogger()->log("Twój debug");
Stosowanie globalnych części szablonu (partials)
Normalnie używam
<?php include_partial('errors', array('form' => $form)) ?>
Wówczas Symfony szuka części w apps/current_app/modules/current_module/templates/_errors.php
Jeśli chcemy wskazać konkretny moduł:
<?php include_partial(nazwa_modulu/errors', array('form' => $form)) ?>
Wówczas Symfony szuka części w apps/current_app/modules/nazwa_modulu/templates/_errors.php
Gdy użyjemy:
<?php include_partial('global/errors', array('form' => $form)) ?>
Wówczas Symfony będzie szukało części w apps/current_app/templates/_errors.php. Wniosek nasuwa się sam, nie nalezy używać nazwy ‘global’ jako nazwy modułu
Wyświetlenie dowolnej zawartości
echo sfYamlInline::dump($dowolna_zmienna);
$dowolna_zmienna może być naprawdę dowolną zmienną, również obiektem i tablicą. Zmienna zostanie tak sformatowana aby była czytelna dla człowieka.
I18n
Przy wielojęzycznej stronie w szablonach korzystamy z
<?php echo __("Polski string") ; ?>
Po stronie kontrolera lub modelu:
sfContext::getInstance()->getI18N()->__('Polski string');
Przydaje się szczególnie do określania etykiet dla formularzy po stronie modelu.