Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework] odwołanie do innego controllera
Forum PHP.pl > Forum > PHP > Frameworki
jakis_login
witam,
mam taki układ plików i katalogów
  1. controller
  2. indexController.php
  3. helpController.php
  4. views
  5. scripts
  6. index.phtml
  7. help.phtml


i teraz mam pewną funkcję w indexController.php która pobiera dane z bazy i wiadomo - wyświetla sie w widoku index.phtml. url wyglada wtedy np. tak: http://mojastrona.pl/index

a teraz jak tą same wartości wyświetlić także gdy url to http://mojastrona.pl/help czyli w widoku help.phtml ? Co mam skopiować te same funkcję z indexController.php do helpController.php - przecież do mija się z celem. Proszę o pomoc.
IceManSpy
Bo widoki się inaczej trzyma.
Dla indexController (i akcji index) ma być view/scripts/index/index.phtml
Dla helpController (i akcji index) ma być view/scripts/help/index.phtml

Lepiej zrób sobie odpowiednie akcje w indexController, a potem zrób sobie routing (route).
jakis_login
sorki pomysliłem się z tymi widokami - strukturę mam tak wałśnie jak napisałes. nie za bardzo wiem o co chodzi z tym routingiem ?
IceManSpy
To pokaż prawidłową strukturę oraz zawartość index i help Controller.
jakis_login
indexController.php wygląda tak:

  1. class IndexController extends Zend_Controller_Action {
  2.  
  3. function init() {
  4. $this->view->baseUrl = $this->_request->getBaseUrl();
  5. Zend_Loader::loadClass('Configuration');
  6. Zend_Loader::loadClass('Projects');
  7. self::countProjects();
  8. }
  9.  
  10. function indexAction() {
  11. $configuration = new Configuration();
  12. $this->view->configurations = $configuration->fetchAll("id='1'");
  13. $this->view->news = $configuration->fetchAll("id <> '1' AND id <> '2'");
  14. self::countProjects();
  15.  
  16. }
  17. function countProjects($region = null){
  18. $project = new Projects();
  19.  
  20. $this->view->poland_concepts = count($project->fetchAll($project->select()->where('STATUS = "1"')));
  21. $this->view->poland_projects = count($project->fetchAll($project->select()->where('STATUS = "2"')));
  22.  
  23. if($region){
  24. $this->view->region_concepts = count($project->fetchAll($project->select()->where('REGION_ID = "'.$region.'" AND STATUS = "1"')));
  25. $this->view->region_projects = count($project->fetchAll($project->select()->where('REGION_ID = "'.$region.'" AND STATUS = "2"')));
  26. }
  27. ...
  28. }
  29. ...


helpController.php

  1. class helpController extends Zend_Controller_Action {
  2.  
  3. function init() {
  4. $this->view->baseUrl = $this->_request->getBaseUrl();
  5. Zend_Loader::loadClass('Help');
  6. }
  7. function indexAction() {
  8. $this->view->title = "help";
  9. $article = new Help();
  10. $this->view->articles = $article->fetchAll();
  11. }
  12.  
  13. function addAction(){
  14.  
  15. $this->view->title = "Artykuły";
  16.  
  17. if ($this->_request->isPost()) {
  18. Zend_Loader::loadClass('Zend_Filter_StripTags');
  19. $filter = new Zend_Filter_StripTags();
  20. //itd. zupełnie inne akcje niż w indexController.php
  21. ...


a chodzi mi o wartości te: $this->view->poland_concepts itd.(jest tego dużo) w indexController
a to prawidłowa str. katalogow

  1. controller
  2. indexController.php
  3. helpController.php
  4. views
  5. scripts
  6. index
  7. index.phtml
  8. help
  9. help.phtml


poprostu chciałbym mieć w help.phtml wartości z kontrolera indexContorller.php z funkcji np countProjects();
tvister
w widoku (phtml) wywołaj $this->action(tutaj parametry)
jakis_login
hmmm... a mógłbyś podać przykład z parametrami bo nie za bardzo wiem jakie podać parametry
istrd
Zapewne takie smile.gif $this->action('index','index')
IceManSpy
A czemu countProjects nie wsadzisz do indexController? Albo w ogóle countProjects zrobić jako nowy model?
jakis_login
Cytat(istrd @ 1.11.2011, 20:55:13 ) *
Zapewne takie smile.gif $this->action('index','index')

próbowałem już coś takiego ale to mi wtedy ładuję cały widok na stronę a ja chce się przecież odwoływać do konkretnych wartości np. w funkcji countProjects
Janusz1200
Jeżeli masz funkcję, która robi coś z bazą, (u Ciebie chyba countProjects() ) to ona powinna być w modelu.
Hierarchia katalogów jak w dokumentacji (models i controllers na tym samym poziomie).
I wtedy z obu kontrolerów korzystasz z tego samego modelu.
Sorry, że nie odniosę się do bezpośredniego rozwiązania Twojego problemu, ale
tak powinno być zrobione, jak napisałem.
jakis_login
Podsunełes mi pewien pomysł ale nie wiem co jest z kodowaniem pl znaków, w bazie mam wszedzie utf-8 unicode pliki phtml też wszystkie utf8 bez BOM, trzeba tylko ustawić w zend. Próbowałem już chyba wszystkiego co znalazłem w googlach.
w configu np próbowałem tak:
[general]
db.adapter = PDO_MYSQL
db.config.host = ****
db.config.username = ****
db.config.password = ****
db.config.dbname = ****
db.config.charset = utf8
ale nic nie dało. pomocy...
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.