2012-04-10 5 views
0

Ich habe noch kein sehr einfaches MVC-Framework gefunden. Wie ermöglichen Frameworks den Zugriff auf einen Controller über eine URL? Ich denke, es hat mit der QUERY_STRING zu tun, aber ist es nicht eine ? zu haben?Zugriff auf Controller über URL in einem MVC

http://localhost/public/controllername 

und localhost/public befindet sich unter:

C:\wamp\www\public\ 

, die eine index.php enthält

+0

Sie können [Symfony2] (http://symfony.com) überprüfen, und es ist Mikroversion, [Silex] (http://silex.sensiolabs.org/). Es ist ein entkoppeltes PHP-Framework und Sie können nur die benötigten Komponenten verwenden. Der Schöpfer von Symfony hat [eine Reihe von Blog-Posts] (http://fabien.potencier.org/article/50/create-your-own-framework-on-top-of-the-symfony2-component-part-1) Erklären, wie ein Framework mit Symfony-Komponenten erstellt wird. : –

Antwort

1

Parsen, dies durch getan wird die Verwendung von .htaccess überschreibt (Apache mod_rewrite):

  1. Sie verwenden .htaccess umschreibt, um jede Abfrage, die keine statische Datei ist, an Ihren Haupteingangspunkt zu leiten, z. B. index.php, vorausgesetzt, Sie verwenden PHP als serverseitige Sprache.
  2. Sie analysieren dann den URI innerhalb von index.php und stellen einige Routen in Ihrer Anwendung her.

Schnell Beispiel:

.htaccess Datei:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

index.php Datei:

$uri = $_SERVER['REQUEST_URI']; 
$parts = explode('/', $uri); 
// assuming you want /controller/action/* mapping 
$controller = 'index'; // default 
$action = 'index'; // default 
if (isset($parts[0])) $controller = $parts[0]; 
if (isset($parts[1])) $action = $parts[1]; 
// now, you'd try to establish some logic to test wether this controller/action 
// actually exists, and load it. I'll leave this up to you. 

Dies ist natürlich nur ein schnelles und grobes Beispiel, aber sollte geben Sie eine Vorstellung davon, wie dies zu tun ist.

+0

aber '$ parts [0]' ist leer. Und wenn ich sie in Unterordner platziere, ändert sich der Inhalt von '$ parts'. – Michelle

+0

@JackSpairow Dies ist keine Website, auf der Sie eine Lösung erhalten, die Sie einfach in Ihre Anwendung kopieren und einfügen können. Der obige Code ist als Zeiger und nicht als Arbeitslösung gedacht. Der beste Weg, dieses Ding zum Laufen zu bringen, ist es, es selbst zu versuchen. –

+0

Ich habe nur versucht zu verstehen. – Michelle

-1

es funktioniert im Allgemeinen $ _SERVER [ 'REQUEST_URI']

Verwandte Themen