Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework]Odwołanie się do innej akcji w tym samym kontrollerze
Forum PHP.pl > Forum > PHP > Frameworki
coolin1986
Chciał bym zrobić coś takiego:

  1. <?php
  2. public function saveAction(){
  3. $id = (int)$this->_request->getPost('id');
  4.  if($id){
  5. $this->editAction($id);
  6.  }
  7.  
  8. }
  9.  
  10. private function editAction($id){
  11. echo $id;
  12. }
  13. ?>


Wywala mi błędy. Jak prawidłowo odwołać się do innej metody w tym samym kontrollerze?
LBO
1. Nie dawaj parametrów metodach akcji, dispatcher Ich nie wypełni.
2. Zend_Controller_Action::_forward()
3. A to nie zadziała?
  1. <?php
  2. public function saveAction(){
  3. $id = (int) $this->_request->getPost('id');
  4. if($id){
  5. $this->editAction($id);
  6. }
  7. }
  8.  
  9. public function editAction(){
  10. $id = (int) $this->_request->getPost('id');
  11. echo $id;
  12. }
  13. ?>
coolin1986
ok, zadzialalo. Tylko dlaczego musi byc public tego nie rozumiem.
No i nie ma różnicy jak się okazało czy przekazuje zmienną: $this->editAction($id);,
czy bez $this->editAction()

Dzięki za radę!
LBO
public musi być dla dispatchera, który wywołując akcje zwyczajnie tworzy instancję kontrolera i wywołuję metodę z akcją. Jeżeli metoda jest prywatna dispatcher nie ma do niej dostepu.
  1. <?php
  2. editAction($id)
  3. ?>

bedzie działało póki wywołujesz ją wewnętrznie z innej metody w kontrolerze:
  1. <?php
  2. $this->editAction(1); //przykład
  3. ?>

jednak dispatcher wywoła ją w ten sposób:
  1. <?php
  2. $controllerInstance->editAction(); //zwróć uwagę na brak jakiegokolwiek parametru
  3. ?>

co wywoła błąd.
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.