Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework] Załadowanie widoku ajaxem
Forum PHP.pl > Forum > PHP > Frameworki
Wolfie
Witam,


Mam do menu głównego podpięte jquery, gdy klikam na element menu wywoluję następującą funkcję :

  1. $("li").click(function(){
  2. var ul = $(this).parent();
  3. var children = ul.children();
  4. var self = this;
  5. children.each(function(index, elem){
  6. if(self == this){
  7. $(elem).find('a').text();
  8. $(this).unbind('mouseout');
  9. $('#leftcolumn').load(App.baseUrl+'/default/index/'+$(elem).find('a').text()+'/format/html'); <<----------
  10. }
  11. else if($(elem).height() == 150){
  12. $(this).bind('mouseout', [], function(){$(this).stop().animate({height:'50px'},{queue:false, duration:600, easing: 'easeOutBounce'})});
  13. $(this).stop().animate({height:'50px'},{queue:false, duration:600, easing: 'easeOutBounce'})
  14. }
  15.  
  16. })
  17. $(this).unbind('mouseout');
  18. });


Najważniejsza jest linijka zaznaczona strzałką

Następnie mam sobie kontroller który wygląda następująco :

  1. class IndexController extends Zend_Controller_Action
  2. {
  3.  
  4. public function init()
  5. {
  6. /* Initialize action controller here */
  7. $ajaxContext = $this->_helper->getHelper('AjaxContext');
  8. $ajaxContext->addActionContext('about', 'html')
  9. ->addActionContext('projects', 'html')
  10. ->initContext();
  11. }
  12.  
  13. public function indexAction()
  14. {
  15. // action body
  16. }
  17.  
  18. public function aboutAction(){
  19. // pretend this is a sophisticated database query
  20. $this->_helper->viewRenderer->setNoRender(true);
  21. $this->_helper->layout->disableLayout(true);
  22. $data = array('red','green','blue','yellow');
  23. //throw new Exception('var_export($data)');
  24. $this->view->data = $data;
  25. }
  26.  
  27. }


Następnie widok, bardzo prosty testowy "about.ajax.phtml":

  1. <ul>
  2. <?php foreach ($this->data as $color) : ?>
  3. <li><?= $color ?></li>
  4. <?php endforeach; ?>
  5. </ul>


Request na serwer idzie prawidłowo, ale niestety w odpowiedzi nic nie dostaję, kombinowałem na różne sposoby

Może jakieś pomysły ?
snapshot
  1. $this->_helper->viewRenderer->setNoRender(true);

Tym wyłączasz renderowanie widoku. Spróbuj bez tego
Janusz1200
1. Wywołujesz akcję index zamiast about.
2. W init controllera robisz dobrze
3. NIE disabluj layoutu w akcji, to robi za Ciebie helper.
4. Nie disabluj reenderowania view, bez sensu.
5. Prawidłowo nazwij view (jak nazwałeś, *.ajax.phtml) i powinno działać.
6. W tym wypadku lepiej byłoby użyć json i wtedy w ogóle nie trzeba view (ustawiasz zmienne view i dostajesz je w jscrypcie)
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.