Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony]Dodatkowy plik konfiguracyjny
Forum PHP.pl > Forum > PHP > Frameworki
cyklotrial
Witam!

Chciałbym się dowiedzieć czy jest możliwe stworzenie pliku konfiguracyjnego, który można by "edytować" z poziomu przeglądarki, tak aby w każdym miejscu aplikacji można było skorzystać z danych w nim zawartych?
Niestety sfConfig::set na niewiele się tutaj przydaje ponieważ zmiany nie są wprowadzane na stałe do pliku.
Crozin
Nadpisuj zawartość app.yml?
cyklotrial
Cytat(Crozin @ 6.06.2010, 21:23:29 ) *
Nadpisuj zawartość app.yml?

Masz na myśli normalne otwarcie pliku i zmianie jego zawartości np. przy użyciu fope,fwrite etc?
Czy tez może jakiś inny sposób?
Dopiero zaczynam przygodę z Symfony i niestety jeszcze sporo rzeczy jest dla mnie niejasne....
-=Peter=-
W symfony masz do wczytywania/zapisywania plików yaml stosowne klasy. Znajdują się one w folderze yaml, interesować powinny Cię sfYamlDumper oraz sfYamlParser
cyklotrial
Dziekuje za podpowiedzi. Teraz już wiem jak to powinny byc wykonane dla pojedynczej aplikacji.
Nasuwa mi się jeszcze jedno pytanie:
Czy można stworzyć plik tak aby działał w obrębie całego serwisu (dla wszystkich aplikacji :backend i frontend)?
Np. tworze plik w katalogu "/config" o nazwie "mojeUstawienia.yml"
Jak do niego odnosić się we wszystkich aplikacjach?
arecki
Cytat(cyklotrial @ 7.06.2010, 11:17:04 ) *
Czy można stworzyć plik tak aby działał w obrębie całego serwisu (dla wszystkich aplikacji :backend i frontend)?
Np. tworze plik w katalogu "/config" o nazwie "mojeUstawienia.yml"
Jak do niego odnosić się we wszystkich aplikacjach?


Odpowiem na moim przykładzie. Potrzebowałem aby we wszystkich aplikacjach mieć wspólny routing więc:
po pierwsze primo:
- w katalogu "config" projektu zrobiłem plik wspolny_routing.yml w którym definiuje wspólne wpisy Routingu

po drugie primo:
- w katalogu "lib" projektu zrobiłem sobie klasę MojeNarzedzia w której zdefiniowałem funkcję która parsuje plik i dołącza elementy do każdej z aplikacji:
  1. class MojeNarzedzia {
  2. public static function loadRouting(sfEvent $event) {
  3. $r = $event->getSubject();
  4. $route = sfYaml::load(sfConfig::get('sf_config_dir').DIRECTORY_SEPARATOR.'wspolny_routing.yml');
  5.  
  6. if($route)
  7. foreach ($route as $routeName=>$params) {
  8. $r->prependRoute($routeName, new sfRoute($params['url'], $params['param']));
  9. }
  10. }
  11. }


po trzecie primo:
- w katalogu config każdej aplikacji jest plik nazwaAplikacjiConfiguration.class.php a w nim definiuje funkcję configure() w której odwołuje się do mojej klasy w momencie gdy występuje event routing.load_configuration. Wygląda do tak:
  1. class frontendConfiguration extends sfApplicationConfiguration
  2. {
  3. public function configure()
  4. {
  5. // ładowanie wspólnego routingu
  6. $this->dispatcher->connect('routing.load_configuration', array('MojeNarzedzia', 'loadRouting'));
  7. }
  8. }


I tak w każdej aplikacji mogę sobie dołączyć wczytywanie wspólnego pliku konfiguracyjnego. Co do eventów pod które możesz coś podpiąć to przeczytaj ten manual.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.