2016-04-01 5 views
2

, wenn Sie diese nicht verwendet haben, bevor der Link lautet: http://altorouter.com/Altorouter kann nicht herausfinden, wie man richtig Route PHP

ich eine kleine Anwendung, mache aber benötigen keinen Rahmen, nur Routing. Also habe ich beschlossen, einen Altoerouter auszuprobieren, da es ziemlich einfach zu sein scheint.

Ich möchte bestimmte Routen zuordnen, um bestimmte Dinge zu tun. zum Beispiel:

www.example.com/products/

sollte dies meine products.php Vorlage und ziehen Daten aus der Datenbank füllen Sie die Felder zeigen. Ich habe diese Arbeit mit dem folgenden bekam:

$router->map('GET', '/products', function() { 
    require('partials/connectdb.php'); //Require Database Connection 
    $pageContent = getProductsContent($conn); //prepare all the page content from database 
    require __DIR__ . '/products.php'; //require the template to use 
}); 

Das gleiche gilt für alle anderen Standardseiten, mein Problem ist, wenn die Route ändern können. Zum Beispiel:

www.example.com/shoes/

www.example.com/shorts/

www.example.com/shirts/

www.example.com/ties/

Wenn ein Benutzer zu diesen Routen geht, möchte ich die Parameter 'Schuhe' erhalten und dann, während ich noch die Vorlage products.php verwende, die Logik nur für Schuhe machen.

So bei der Dokumentation suchen sie sagt, Sie tun können:

www.example.com/[*] // was alles bedeutet.

Aber nach dem Hinzufügen dieser in meine gelisteten Routen, macht es alles andere ungültig, den der Benutzer versucht zu besuchen. Also, wenn sie unter:

www.example.com/products // Wie es vor

gearbeitet Es tut eigentlich die Logik im Inneren:

www.example.com/[*]

Kennt jemand altorouter und kann mir bitte weiterhelfen? Ich werde meine ganze Seite Code unten ein:

// Site Router 
$router->map('GET', '/', function() { 
    require('partials/connectdb.php'); //Require Database Connection 
    $pageContent = getHomeContent($conn); 
    require __DIR__ . '/home.php'; 
}); 


$router->map('GET', '/products', function() { 
    require('partials/connectdb.php'); //Require Database Connection 
    $pageContent = getProductsContent($conn); 
    require __DIR__ . '/products.php'; 
}); 


$router->map('GET', '/[*]', function($id) { 
    require('partials/connectdb.php'); //Require Database Connection 


    $test = 'this was a test'; 
    $pageContent = getProductsContent($conn); 
    require __DIR__ . '/products.php'; 
}); 

// match current request url 
$match = $router->match(); 

// call closure or throw 404 status 
if($match && is_callable($match['target'])) { 
    call_user_func_array($match['target'], $match['params']); 
} else { 
    // no route was matched 
    header($_SERVER["SERVER_PROTOCOL"] . ' 404 Not Found'); 
} 

Antwort

0

Ihre url

www.example.com/products/

www.example.com/products/shoes

www.example.com/products/shirts

Dann sollten Sie dies tun:

$router->map('GET', '/products/:type', function($type) { 
    require('partials/connectdb.php'); //Require Database Connection 

    if(!isset($type)){ 
    $pageContent = getProductsContent($conn); //prepare all the page content from database 
    require __DIR__ . '/products.php'; //require the template to use 

    if($type == 'shoes'){ 
     //do this 
     echo 'shoes'; 
    } 
    if($type == 'shirts'){ 
     //do that 
     echo 'shirts'; 
    } 
}); 
+0

Dies funktioniert nicht, ich bekomme nur eine leere Seite –

+0

Was ist der Fehler? – iamkdev

+0

kein Fehler, nur leere Seite, wenn Sie auf altorouter Website aussehen: Typ ist nicht eine Sache, die verwendet werden kann, denke ich –

Verwandte Themen