Hi liebe Community,
ich habe mir nun mittlerweile ein geeignetes MVC-Pattern, für mein Login, zusammen gebaut.
Jetzt habe ich mal eine generelle Frage an Euch. Wenn mein Unterkontroller "AuthController" sich erfolgreich über Das Model ein logen konnte, soll er auf die Hauptseite meiner Wep-App weiterleiten. Das Tut er auch, allerdings erst, wenn ich meine Wep-App mit F5 aktualisiere.
Mir ist auch klar wieso er das macht. ich müsste über ein Request den Befehl für den Fronkontroller absetzten, damit dieser dann den passen neuen Unterkrontroller "MainController" läd, und dieser dann auf meine Hauptseite weiterleitet.
Habt Ihr schon Erfahrungen, wie man nach dem MVC-Pattern, auf eine weitere Seite delegieren lässt, in dem auch das passende Template geladen wird? Über Ideen und Anregungen bin ich wie immer sehr dankbar.
Hier mein bisheriger Code:
Bootstrap-Datei
FrontController
AuthController
LG, Davicito
ich habe mir nun mittlerweile ein geeignetes MVC-Pattern, für mein Login, zusammen gebaut.
Jetzt habe ich mal eine generelle Frage an Euch. Wenn mein Unterkontroller "AuthController" sich erfolgreich über Das Model ein logen konnte, soll er auf die Hauptseite meiner Wep-App weiterleiten. Das Tut er auch, allerdings erst, wenn ich meine Wep-App mit F5 aktualisiere.
Mir ist auch klar wieso er das macht. ich müsste über ein Request den Befehl für den Fronkontroller absetzten, damit dieser dann den passen neuen Unterkrontroller "MainController" läd, und dieser dann auf meine Hauptseite weiterleitet.
Habt Ihr schon Erfahrungen, wie man nach dem MVC-Pattern, auf eine weitere Seite delegieren lässt, in dem auch das passende Template geladen wird? Über Ideen und Anregungen bin ich wie immer sehr dankbar.
Hier mein bisheriger Code:
Bootstrap-Datei
PHP:
<?php
namespace Test;
use Test\...\FrontController.php'),
Test\...\FileSystemControllerResolver.php'),
Test\...\HttpResponse.php'),
Test\...\HttpRequest.php');
require_once('...\FrontController.php');
require_once('...\FileSystemControllerResolver.php');
require_once('...\HttpResponse.php');
require_once('...\HttpRequest.php');
// Instancen für den Request und Response werden erzeugt. Sie dienen der Server-/Client-Kommunikation.
$req = new HttpRequest();
$res = new HttpResponse();
// Eine Instance des FileSystemControllers wird erzeugt und ein StandardUnterkontroller wird übergeben.
$resolver = new FileSystemControllerResolver('Controller', 'AuthController');
// Nun wird der Froncontroller des MVC-Modells geladen, welches - mitteld Resolver-Objektes - eine Unterkontrollerklasse
// übergeben bekommt und führt dessen "run"-Methode aus.
$controller = new FrontController($resolver);
$controller->run($req, $res);
?>
FrontController
PHP:
<?php
namespace Test\...\Controller;
use Test\...\HttpRequest,
Test\...\HttpResponse,
Test\...\FileSystemControllerResolver;
class FrontController{
// Resolver enthält eine Instance einer Unterkontroller-Klasse
private $resolver;
/**
/* Ein passender Unterkontroller wird initialisiert
*/
public function __construct(FileSystemControllerResolver $resolver){
$this->resolver = $resolver;
}
/**
/* Diese Methode startet die jeweilige run-Methode, des passenden Unterkontrollers,
/* je nachdem, welches Ereignis/Request vom Client angefordert wurde.
*/
public function run(HttpRequest $req, HttpResponse $res){
$command = $this->resolver->getController($req);
//var_dump($command);
$command->run($req, $res);
$res->flush();
}
}
AuthController
PHP:
<?php
namespace Test\...\Controller;
use Test\...\AuthModel,
Test\...\PSMView,
Test\...\HttpRequest,
Test\...\HttpResponse;
//require('LoginController.php');
/**
* Die LoginController Managet das Loginverhalten
*
*
* @author Davicito
*/
require_once('...l\AuthModel.php');
require_once('...\PSMView.php');
session_start();
class AuthController
{
/**
* Konstruktor
*/
public function __construct(){}
public function run(HttpRequest $req, HttpResponse $res)
{
$model = new AuthModel();
$view = new PSMView();
if(isset($_SESSION['bn_is_logged'])){
$view->setTemplate('MenuTempl');
print $view->loadTemplate();
//$res->write('Sie sind Eingelogt!');
}else{
$view->setTemplate('LoginTempl');
print $view->loadTemplate();
if($req->getParameter('login') && !empty($req->getParameter('bn')) && !empty($req->getParameter('db'))){
try
{
$model->login('localhost',$req->getParameter('bn'),$req->getParameter('pw'),$req->getParameter('db'));
var_dump($model->checkUser());
//if(isset($_SESSION['bn_is_logged'])) var_dump($_SESSION['bn_is_logged']);
}
catch(Exception $e)
{
$res->write( $e->getMessage());
}
}
}
if($req->getParameter('logout')) $model->logout();
}
}
?>
LG, Davicito