Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZF] problem z modul/kontroler/akcja
phpion
post
Post #1





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Hejka,
mam kolejny problem z ZF, walczyłem wczoraj do 1 w nocy no i dziś do teraz, w końcu się poddałem. Zamierzenie mam takie:
http://localhost/
odpala modul 'frontend', kontroler 'index' oraz akcję 'index' (aktualnie działa również http://localhost/frontend, http://localhost/frontend/index, http://localhost/frontend/index/index więc tu jest OK).
Równocześnie chciałbym aby wejście w:
http://localhost/admin
odpalało moduł 'admin', kontroler 'index' oraz akcję 'index' co niestety aktualnie się nie dzieje :/ Pomimo usilnych prób print_r($frontController->getRequest()) zawsze pokazje admina jako akcję, a nie moduł. W manualu znalazłem przykład:
  1. <?php
  2. // Assuming the following:
  3. $ctrl->setControllerDirectory(
  4. 'default' => '/path/to/default/controllers',
  5. 'news' => '/path/to/blog/controllers',
  6. 'blog' => '/path/to/blog/controllers'
  7. )
  8. );
  9. ...
  10. Module + controller + action + params:
  11. <a href="http://example/blog/archive/list/sort/alpha/date/desc" target="_blank">http://example/blog/archive/list/sort/alpha/date/desc</a>
  12. module  == blog
  13. controller == archive
  14. action  == list
  15. sort  == alpha
  16. date  == desc
  17. ?>

czyli dokładnie to, czego potrzebuję jednak nie bardzo chce to działać sad.gif Robię to tak:
index.php
  1. <?php
  2. require_once('../config.php');
  3. require_once('../__autoload.php');
  4.  
  5. $db = Zend_Db::factory('Pdo_'.DB_TYPE, array('host' => DB_HOST, 'username' => DB_USER, 'password' => DB_PASS, 'dbname' => DB_BASE));
  6. $db->setFetchMode(1);
  7. $ctrls = array(
  8. 'frontend' => PATH_MODULES.'/frontend/controllers',
  9. 'admin' => PATH_MODULES.'/admin/controllers'
  10. );
  11.  
  12. $frontController = Zend_Controller_Front::getInstance();
  13. $frontController->setControllerDirectory($ctrls);
  14. $frontController->setDefaultModule('frontend');
  15. $frontController->setParam('db', $db);
  16.  
  17. Zend_Controller_Front::run(array(PATH_MODULES.'/admin/controllers', PATH_MODULES.'/frontend/controllers'));
  18.  
  19. echo '<pre>';
  20. print_r($frontController->getRequest());
  21. ?>

Zauważyłem, że jeśli zmienię kolejność w tablicy przekazywanej do Zend_Controller_Fron::run() to zawsze używany jest ten ostatni moduł.
Reasumując: w jaki sposób zmusić ZF aby:
http://localhost/ (+ ew. parametry) ładowało dane z 'frontend' <- myślałem, że osiągnę to przez $frontController->setDefaultModule('frontend');
http://localhost/admin (+ ew. parametry) ładowało dane z 'admin'.
Uproszczona struktura moich katalogów:
  1. /
  2. --- app
  3. ------ admin
  4. --------- controllers
  5. --------- models
  6. --------- views
  7. ------ frontend
  8. --------- controllers
  9. --------- models
  10. --------- views
  11. --- www
  12. ------ .htaccess
  13. ------ index.php
  14. --- __autoload.php
  15. --- config.php

Proszę o pomoc bo nie wiem jak to ugryźć :/
Go to the top of the page
+Quote Post

Posty w temacie


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 - 08:58