#1 12. Februar 2014 Ich habe das oben genannte login-mvc installiert (panique/php-login · GitHub) Nun habe ich das Problem, das ich Daten aus einem alten Reportingsystem vorerst so übernehmen muss. Die Reports werden jeweils in einer eigenen php-Datei generiert und auch so aufgerufen. Mein Problem dabei ist, dass ich für jede einzelne PHP-Datei eine function in den Controller schreiben müsste, damit sie im View gerendert wird. Gibt es eine Möglichkeit die Funktion automatisch irgendwie generieren zu lassen. Ein andereres Framework ist keine Alternative, nur der letzte Ausweg! Das ist die Funktion um die es geht: PHP: function index () { $this -> view -> render ( 'dashboard/index' ); } + Multi-Zitat Zitieren
#2 13. Februar 2014 AW: PHP-Login-MVC Gibt es bei dem mini-framework kein controller der immer geladen wird? ich würde mal tippen der "index" controller? ansonsten, musst du es jedes mal neu aufrufen oder du fügst selbst einen controller hinzu, der jedes mal geladen wird! ich sehe gerade das framework ist selbst ja noch in der beta... und der kerl wollte es im januar fertig machen... ich hoffe du stürtzt dich nicht auf ein totes framework... davon gibt es nämlich schon genügend. btw: hast du dich vorher schonmal mit mvc beschäftigt? + Multi-Zitat Zitieren
#3 13. Februar 2014 AW: PHP-Login-MVC habe mich davor noch nicht mit mvc beschäftigt. innerhalb des dashboard muss ich jede unterseite die ich verlinke mit der oben genannten function deklarieren, sonst geht nicht. es gibt die hauptindex, die denke ich immer gerendert wird. php-login/application/controllers/index.php at master · panique/php-login · GitHub + Multi-Zitat Zitieren
#4 13. Februar 2014 AW: PHP-Login-MVC du weißt schon, dass ich mit mvc nicht das framework meine, sondern Model View Controller – Wikipedia ? und hast du dich schon mit OOP beschäftigt? naja ich versuch es mal einfach zu erklären: du hast beispielsweise den controller index in der "application/controllers/index.php", dieser controller regelt alle views, die in dem ordner "application/view/index/" sind. die datei "application/controllers/index.php" sieht so aus: PHP: <? php class Index extends Controller { function __construct () { parent :: __construct (); } function index () { $this -> view -> render ( 'index/index' ); } } in "__construct()" wird ALLES geladen, was mit diesem controller zutun hat, also wenn du hier "echo 'yolo';" rein schreibt erscheint das in allen dateien die sich in "application/view/index/" befinden. "index()" ist nur für die datei "application/view/index/index.php" zuständig würdst du jetzt das noch hinzufügen, müsstest du auch in der view/index die datei "yolo.php" erstellen PHP: function yolo () { $this -> view -> render ( 'index/yolo' ); } + Multi-Zitat Zitieren
#5 13. Februar 2014 AW: PHP-Login-MVC Ja ich weiß was du meinst Habe mich schon mal grundsätzlich mit OOP beschäftigt bzw hatte es in meiner Ausbildung damals. Ja genau das ist ja mein Problem, dass ich eben für jede PHP-Datei die function (in deinem fall yolo.php) hinzufügen muss. Ich muss das aber irgendwie automatisiert bekommen, da ab und zu neue reports dazukommen und dann nicht immer manuell auch noch die function reingeschrieben werden soll. Hätte gerne, dass ich die PHP-Datei in den Ordner dashboard tue und diese dann auch gerendert werden kann wenn sie so aufgerufen wird "dashboard/meinedatei" ---> alsod die function zu der datei automatisch erstellt wird. + Multi-Zitat Zitieren
#6 13. Februar 2014 AW: PHP-Login-MVC hi, ich geh mal davon aus, das du im controller alle methode hinzufügen musst. also zb. PHP: function index (){ $this -> view -> render ( 'index/index' );}function dashboard (){ $this -> view -> render ( 'dashboard/index' );}... und genau das willst du nicht? vielleicht hilft das. PHP: public function __call ( $name , $arguments ) { if( file_exists ( dirname ( __FILE__ ). '/../views/' . $name . '/index.php' )){ $this -> view -> render ( $name . '/index' ); }} diese methode wird immer aufgerufen wenn ein methoe nicht zu finden ist. du guckst anhand des $name (methode) ob deine datei vorhanden ist, wenn ja, dann render. ungetestet und nur ein denkansatz. + Multi-Zitat Zitieren
#7 13. Februar 2014 AW: PHP-Login-MVC ja fast.. es handelt sich dabei nicht um die Hauptkategorien wie index, dashboard etc. sondern unterseiten vom dashboard also dashboard/index, dashboard/report_statistik, dashboard/report_verkäufe wobei report_statistik und report_verkäufe dann die gleichnamigen php dateien im ordner dashboard wären. + Multi-Zitat Zitieren
#8 13. Februar 2014 AW: PHP-Login-MVC dann guck mal was $arguments liefert. ggf. könnte es schon so gehen. PHP: public function __call ( $name , $arguments ) { var_dump ( $arguments ); // ggf. ist $arguments ein array // dann muss $arguments bearbeitet werden, damit du erhälst was du bruchst $arguments = $this -> tuWasDamit ( $arguments ); if( file_exists ( dirname ( __FILE__ ). '/../views/' . $name . '/' . $arguments . '.php' )){ $this -> view -> render ( $name . '/' . $arguments ); }}private function tuWasDamit ( $arguments ) { // $arguments verarbeiten return $arguments ;} + Multi-Zitat Zitieren
#9 17. Februar 2014 AW: PHP-Login-MVC Mir ist nicht ganz klar woher jetzt $name und $arguments herkommen soll. Habe es auch ausprobiert, kommt aber fehler "missing argument". __________ wenn das mit dem "__call" gehen sollte müsste diese funktion auf jeden fall funktionieren tut sie aber nicht + Multi-Zitat Zitieren
#10 19. Februar 2014 AW: PHP-Login-MVC Keiner ne Idee? Irgendwo muss das __call überschrieben werden, da es außerhalb vom framework funktioniert. Find nur nirgends wo. + Multi-Zitat Zitieren
#11 24. Februar 2014 Zuletzt bearbeitet: 24. Februar 2014 AW: PHP-Login-MVC gut __call kann ja nicht da in application / libs / Application.php auf index() verwiesen wird, wenn nix gefunden wird. d.h. du muß die Application.php anpassen. am ende von __construct() PHP: ...} else { // invalid URL, so simply show home/index require CONTROLLER_PATH . 'index.php' ; $controller = new Index (); //$controller->index(); $controller -> other ( $this -> url_controller , $this -> url_action );} und jetzt eine methode (other) in application / controllers / index.php PHP: public function other ( $controller , $action ) { if( file_exists ( dirname ( __FILE__ ). '/../views/' . $controller . '/' . $action . '.php' )){ $this -> view -> render ( $controller . '/' . $action ); }} das sollte nun besser laufen. // edit ungetestet + Multi-Zitat Zitieren
#12 24. Februar 2014 AW: PHP-Login-MVC hast du das getestet? Bei mir tut sich leider nichts. Bekomme trotzdem bei fehlenden Controllern "error/index" angezeigt. edit: Wenn ich das hier weiter oben beim ersten else "error/index" einfüge, stimmt die URL aber bekomme diesen Fehler PHP: ...else { // redirect user to error page (there's a controller for that) $this -> url_controller -> other ( $this -> url_controller , $this -> url_action ); }... Code: Catchable fatal error: Object of class Dashboard could not be converted to string in C:\xampp\htdocs\reports\php-login\application\controllers\dashboard.php on line 45 edit2: gelöst habe jetzt im Controller nur noch Code: function other($controller, $action) { $this->view->render('dashboard/'.$action); } Hat anscheinend etwas mit dem Pfad nicht gestimmt. + Multi-Zitat Zitieren