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.

0 Komentarzy

Komentarze zostały wyłączone.