Verwendung von Parametern in Routen in MVC in PHP
Lassen Sie uns die beschriebene Anwendung an einem
lebensnäheren Beispiel betrachten. Nehmen wir an, unser Controller
PageController enthält ein Array von Seiten
(diese Daten sollten vom Model geliefert werden, aber mit
Models haben wir uns noch nicht befasst, daher lassen Sie uns
die Daten vorerst einfach im Controller speichern):
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
private $pages;
public function __construct()
{
$this->pages = [
1 => 'page 1',
2 => 'page 2',
3 => 'page 3',
];
}
}
?>
Lassen Sie uns eine Aktion show erstellen, die
eine Seite mit einer bestimmten
Nummer (id) auf dem Bildschirm anzeigen wird:
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
private $pages;
public function __construct()
{
$this->pages = [
1 => 'page 1',
2 => 'page 2',
3 => 'page 3',
];
}
public function show()
{
// hier werden wir die Seite mit einer bestimmten Nummer anzeigen
}
}
?>
Nehmen wir an, dass beim Aufruf der Adresse /page/1/
der Text der ersten Seite ausgegeben wird, beim
Aufruf der Adresse /page/2/ -
der Text der zweiten Seite und so weiter. Erstellen wir
die entsprechende Route:
<?php
use \Core\Route;
return [
new Route('/page/:id/', 'page', 'show'),
];
?>
Implementieren wir die beschriebene Methode show:
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
private $pages;
public function __construct()
{
$this->pages = [
1 => 'page 1',
2 => 'page 2',
3 => 'page 3',
];
}
public function show($params)
{
echo $this->pages[ $params['id'] ]; // Seite nach Nummer ausgeben
}
}
?>
Implementieren Sie den Controller UserController,
der das folgende Array enthält:
<?php
$this->users = [
1 => ['name'=>'user1', 'age'=>'23', 'salary' => 1000],
2 => ['name'=>'user2', 'age'=>'24', 'salary' => 2000],
3 => ['name'=>'user3', 'age'=>'25', 'salary' => 3000],
4 => ['name'=>'user4', 'age'=>'26', 'salary' => 4000],
5 => ['name'=>'user5', 'age'=>'27', 'salary' => 5000],
];
?>
Erstellen Sie im Controller UserController eine
Aktion show, die einen
Benutzer anhand einer bestimmten id anzeigt. Lassen Sie sie
unter einer Adresse des folgenden Typs erreichbar sein:
/user/:id/.
Erstellen Sie im Controller UserController eine
Aktion info, die den
Namen oder das Alter eines bestimmten Benutzers ausgibt. Lassen Sie diese
Aktion unter einer Adresse des folgenden Typs erreichbar sein:
/user/:id/:key/, wobei key
den Wert 'name', 'age'
oder 'salary' haben wird.
Erstellen Sie im Controller UserController eine
Aktion all, die eine
Liste aller Benutzer auf dem Bildschirm ausgibt. Lassen Sie diese Aktion
unter einer Adresse des folgenden Typs erreichbar sein:
/user/all/ (hier gibt es keine
Parameter).
Erstellen Sie im Controller UserController eine
Aktion first, die eine
Liste der ersten N Benutzer auf dem Bildschirm ausgibt. Lassen Sie diese
Aktion unter einer Adresse des folgenden Typs erreichbar sein:
/user/first/:n/, wobei im Parameter
die Anzahl der Benutzer steht, die
auf dem Bildschirm ausgegeben werden sollen.