Παράμετροι στις Διαδρομές στο MVC σε PHP
Στο προηγούμενο μάθημα, οι διαδρομές μας είχαν σταθερές διευθύνσεις. Στην πραγματικότητα, ο μηχανισμός δρομολόγησης είναι πιο πολύπλοκος - μπορεί κανείς να κάνει μια μέρος του URI της σελίδας να πέφτει σε ονομασμένες παραμέτρους, που είναι προσβάσιμες αργότερα στον controller.
Ας υποθέσουμε, για παράδειγμα, ότι οι διευθύνσεις μας θα φαίνονταν
έτσι: /test/param1/param2/,
όπου param1 και param2 - αυθαίρετες
συμβολοσειρές. Ταυτόχρονα, θέλουμε διευθύνσεις αυτού του τύπου
να επεξεργάζονται από μια ενέργεια του controller.
Για αυτό, πρέπει να βρούμε ένα όνομα για την παράμετρο
και μπροστά της να βάλουμε άνω και κάτω τελεία, έτσι:
<?php
use \Core\Route;
return [
new Route('/test/:var1/:var2/', 'page', 'act'),
];
?>
Στην περίπτωσή μας, θα προκύψει ότι όλα τα αιτήματα
της μορφής /test/παράμετρος1/παράμετρος2/
θα φτάνουν στην ενέργεια act. Ταυτόχρονα,
στην πρώτη παράμετρο αυτής της ενέργειας θα
φτάνει ένας associative πίνακας με παραμέτρους:
το κείμενο, που θα βρίσκεται στη θέση της πρώτης παραμέτρου,
πέφτει στο στοιχείο του πίνακα με κλειδί 'var1',
και το κείμενο της δεύτερης παραμέτρου - στο 'var2'.
Ας υποθέσουμε, για παράδειγμα, ότι στη γραμμή διευθύνσεων πληκτρολογήθηκε
το ακόλουθο: /test/eee/bbb/. Ας
δούμε τι θα περιέχει η πρώτη παράμετρος
της ενέργειας:
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
public function act($params)
{
var_dump($params); // ['var1' => 'eee', 'var2' => 'bbb']
}
}
?>
Δημιουργήστε τον controller NumController,
και σε αυτόν - την ενέργεια sum. Αφήστε αυτή την
ενέργεια να επεξεργάζεται διευθύνσεις της ακόλουθης μορφής:
/nums/:n1/:n2/:n3/, όπου οι παράμετροι
θα είναι κάποιοι αριθμοί. Κάντε έτσι ώστε
στην οθόνη να εμφανίζεται το άθροισμα των αριθμών που μεταδόθηκαν.