Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZendFramework]Odwołanie się do innej akcji w tym samym kontrollerze
coolin1986
post 4.08.2008, 12:47:41
Post #1





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 3.03.2008
Skąd: Białoruś

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


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?

Ten post edytował coolin1986 4.08.2008, 12:51:57


--------------------
webdesign hamburg
werbung hamburg
GRAND MEDIA
Go to the top of the page
+Quote Post
LBO
post 4.08.2008, 13:00:05
Post #2





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


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. ?>
Go to the top of the page
+Quote Post
coolin1986
post 4.08.2008, 13:19:21
Post #3





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 3.03.2008
Skąd: Białoruś

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


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ę!

Ten post edytował coolin1986 4.08.2008, 13:19:43


--------------------
webdesign hamburg
werbung hamburg
GRAND MEDIA
Go to the top of the page
+Quote Post
LBO
post 4.08.2008, 14:32:42
Post #4





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


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.
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 Wersja Lo-Fi Aktualny czas: 23.06.2025 - 01:35