Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Nazwa kontrolera jako podfolder w widoku
Forum PHP.pl > Forum > Przedszkole
Koldy
Witajcie,

mam sobie kontrolery i rendreruje w nich widok przy pomocy:
  1. $this->view->render($this, 'error');


gdyz, kontrolka $this daje mi nazwe klasy, dzieki czemu moge stwierdzic w jakim folderze szukac plikow, wyglada to mniej wiecej tak:
  1. public function render(Controller $name, $fileName) {
  2. $folderName = get_class($name) . '/';
  3. $filePath = 'Application/View/' . $folderName . $fileName . '.phtml';
  4.  
  5. if(file_exists($filePath)) {
  6. require $filePath;
  7. } else {
  8. require 'Application/View/notFound.phtml';
  9. }
  10. }


I tutaj moje pytanie, czy moge otrzymac w jakis sposob nazwe klasy z ktorej zostala uruchomiona metoda render() bez przekazywania kontrolki $this, poniewaz musze to robic za kazdym razem i za kazdym razem bedzie to $this.

Pozdrawiam
golabow
wskaźnik $this na obiekt jest przekazywany nie jawnie do metody więc nie musisz go przekazywać "jawnie".
Więc takie coś powinno działać:

  1. public function render( $fileName ) {
  2. $folderName = get_class( $this ) . '/';
  3. ...
404
@golabow: zauważ, że kolega wywołuje metodę render na obiekcie view, więc Twój kod zwróci mu nazwę klasy, której view jest obiektem.
Koldy
dokladnie jak kolega wyzej napisal, zwraca mi to 'View' Zamiast np 'Home', jakies sugestie?

Jakby ktos chcial rozwiazanie to:

  1. public function __construct(Controller $indicator) {
  2. $this->controllerName = get_class($indicator);
  3. }


Dodalem to do klasy View, i podczas tworzenia obiektu w kontrolerze przekazuje kontrolke, dzieki czemu moge jej uzyc pozniej w metodzie render.

Pozdrawiam
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.