Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework]Stała w configu
Forum PHP.pl > Forum > PHP > Frameworki
Ikky
Czy moge np dodac jakąs stała w configu którą będe potem mógł używać w kontrolerach?
np adres strony / tytuł
seth-kk
tak
Ikky
awesome
a mógłbyś mi podac przykładowy kod do configa i kontrolera ?
seth-kk
w pliku z configiem
  1. define('STALA1', 'wartosc1');
  2. define('STALA2', 'wartosc2');
  3. return array(/*config content*/);

i np w bootstrapie
  1. $config = new Zend_Config(require 'config.php');

mozna tez kombinowac z metoda setReadOnly()
Ikky
zrobiłem takie coś:

configs/config.php
  1. <?php
  2. return
  3. (
  4. 'adres' => 'www.example.com',
  5. 'tytul' => 'secret',
  6. );


bootstrap.php

  1. protected function _initAutoload()
  2. {
  3. $config = new Zend_Config(require 'configs/config.php');


w kontrolerze

  1. echo $config->adres;


i niestety nie działa nie wiem co jest grane


edit/

zrobiłem takie coś w kontrolerze i działa

  1.  
  2. $config = new Zend_Config(require '../application/configs/config.php');
  3. echo $config->adres . " test";
  4.  
phpion
Tworzysz zmienną $config jako zmienną lokalną w obrębie metody _initAutoload(), a nie jako składową klasy kontrolera i wewnątrz kontrolera nie jest ona już widoczna.
seth-kk
  1. protected function _initAutoload()
  2. {
  3. $config = new Zend_Config(require 'configs/config.php');
  4. Zend_Registry::set('config', $config);


w kontrolerze

  1. $config = Zend_Registry::get('config');
  2. echo $config->adres;
pgrzelka
w którymś projekcie zrobiłem klasę wykorzystującą wzorzec singleton

  1. <?php
  2.  
  3. class Config extends Zend_Config_Ini {
  4.  
  5. static function get()
  6. {
  7. static $instance;
  8. if(!isset($instance)) {
  9. $instance = new Config;
  10. }
  11. return $instance;
  12. }
  13.  
  14. function __construct()
  15. {
  16. parent::__construct('../plik.ini','sekcja');
  17. }
  18. }


wykorzystanie
  1. Config::get()->jakas_zmienna

moje rozwiązanie ma tą zaletę że nie każda podstrona korzysta z konfiguracji, i wtedy nie zawsze klasa jest tworzona, nie musimy jej nigdzie inicjować, pliki ini będzie przeczytany tylko przy pierwszym odwołaniu do zmiennej
Sajrox
Jeszcze ja mam pytanie do ostatnbiego postu @pgrzelka


A skąd Zend wie gdzie szukać ten plik z klasą Config questionmark.gif


Ja utworzyłem sobie plik Config.php z tą klasą, umiesciłem go w aplikacji na próbe. Gdy wywołałem klasę Config dystałem błąd:

  1. Fatal error: Class 'Config_Navigation' not found in C:\wamp\www\zend_quickstart\application\modules\admin\controllers\IndexController.php on line 14
phpion
Musisz ją umieścić jako library/Config/Navigation.php
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.