Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZendFramework] Konfiguracja zasobów modułu
Astarot
post
Post #1





Grupa: Zarejestrowani
Postów: 90
Pomógł: 4
Dołączył: 5.02.2006

Ostrzeżenie: (0%)
-----


Witam, chciałbym aby każdy moduł mojej aplikacji łączył się z inną bazą danych.
W tym celu przygotowałem ustawienia pliku konfiguracyjnego application.ini zgodnie(jak mi się wydaje) z dokumentacją ZF.

  1. resources.modules[] = "";
  2. default.resources.db.adapter = "pdo_mysql"
  3. default.resources.db.params.host = "localhost"
  4. default.resources.db.params.username = "root"
  5. default.resources.db.params.password = "*****"
  6. default.resources.db.params.dbname = "baza1"
  7. default.resources.db.params.charset = "utf8"
  8.  
  9. computer.resources.db.adapter = "pdo_mysql"
  10. computer.resources.db.params.host = "localhost"
  11. computer.resources.db.params.username = "root"
  12. computer.resources.db.params.password = "********"
  13. computer.resources.db.params.dbname = "baza2"
  14. computer.resources.db.params.charset = "utf8"


Jednak zawsze ładowane są zasoby z modułu computer, mimo tego, że aplikacja
wie w jakim module się znajduje, gdyż na stronie z błędem spowodowanym próbą
połączenia się z tabelą która znajduje się w innej bazie są wyrzucane parametry rządania

  1. Request Parameters:
  2.  
  3. 'controller' => 'index',
  4. 'action' => 'index',
  5. 'module' => 'default',
  6. 'email' => '',
  7. 'pass' => '',
  8. )


Czy ktoś może wie w jaki sposób mogę zmusić ZF aby skorzystał w wybranym module z przygotowanych dla niego zasobów?


--------------------
torrenty
Go to the top of the page
+Quote Post
IceManSpy
post
Post #2





Grupa: Zarejestrowani
Postów: 1 006
Pomógł: 111
Dołączył: 23.07.2010
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Nie wiem, czy jest prosty sposób.
Możesz wykorzystać to:
http://framework.zend.com/manual/en/zend.a...sources.multidb
I w zależności od modułu pobierać dany resource.

Ten post edytował IceManSpy 8.01.2012, 16:28:51


--------------------
Go to the top of the page
+Quote Post
Astarot
post
Post #3





Grupa: Zarejestrowani
Postów: 90
Pomógł: 4
Dołączył: 5.02.2006

Ostrzeżenie: (0%)
-----


Dzięki za odpowiedź, niestety nie udało mi się rozwiązać problemu przydzielania zasobów modułowo i wykorzystałem już rozwiązanie multidb.
Niestety generuje ono dużo więcej kodu niż to opisane w manualu. Trzeba konfigurować zasoby w bootstrap następnie w Zend_Db_Table_Abstract ustawiać adapter.

Podeślę swoje rozwiązanie gdyby ktoś kiedyś potrzebował

bootstrap
  1. class Default_Bootstrap extends Zend_Application_Bootstrap_Bootstrap
  2. {
  3. //...
  4. protected function _initDatabases()
  5. {
  6. $resource = $this->getPluginResource('multidb');
  7. $resource->init();
  8. Zend_Registry::set('computer', $resource->getDb('computer')); // pol. nie ustawione jako domyślne
  9. }
  10. }


Zend_Db_Table dla mapperów
  1. class Computer_Model_DbTable_ComputerSite extends Zend_Db_Table_Abstract
  2. {
  3. protected $_name = 'computer_site';
  4.  
  5. protected function _setupDatabaseAdapter()
  6. {
  7. $this->_db = Zend_Registry::get('computer');
  8. parent::_setupDatabaseAdapter();
  9. }
  10. }


w Zend_Db_Table które wykorzystują połączenie ustawione jako domyślne nie musimy niczego dopisywać.

  1. resources.multidb.nazwa.default = true


--------------------
torrenty
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 13:22