Användning av parametrar i rutter i MVC i PHP
Låt oss titta på tillämpningen av det som beskrivits med
ett mer verkligt exempel. Låt vår kontroller
PageController innehålla en array med sidor
(dessa data bör levereras av modellen, men vi har
inte gått igenom modeller än, så låt
data för nu bara lagras i kontrollern):
<?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',
];
}
}
?>
Låt oss skapa en åtgärd show som
kommer att skriva ut en sida med ett specifikt
nummer (id) på skärmen:
<?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()
{
// här kommer vi att skriva ut sidan med ett specifikt nummer
}
}
?>
Låt vid förfrågan till adressen /page/1/
texten på den första sidan visas, vid
förfrågan till adressen /page/2/ -
texten på den andra sidan, och så vidare. Låt oss skapa
motsvarande rutt:
<?php
use \Core\Route;
return [
new Route('/page/:id/', 'page', 'show'),
];
?>
Låt oss implementera den beskrivna metoden 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'] ]; // skriver ut sidan efter nummer
}
}
?>
Implementera kontrollern UserController,
som innehåller följande array:
<?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],
];
?>
I kontrollern UserController, skapa
en åtgärd show som kommer att visa
användaren med ett specifikt id. Låt den
var tillgänglig via en adress av följande typ:
/user/:id/.
I kontrollern UserController, skapa
en åtgärd info som kommer att visa
namnet eller åldern på en given användare. Låt denna
åtgärd vara tillgänglig via en adress av följande
typ: /user/:id/:key/, där key
kommer att ha värdet 'name', 'age'
eller 'salary'.
I kontrollern UserController, skapa
en åtgärd all som kommer att visa
listan över alla användare på skärmen. Låt denna åtgärd
var tillgänglig via en adress av följande typ:
/user/all/ (här finns inga parametrar
alls).
I kontrollern UserController, skapa
en åtgärd first som kommer att visa
listan över de N första användarna på skärmen. Låt denna
åtgärd vara tillgänglig via en adress av följande
typ: /user/first/:n/, där parametern
innehåller antalet användare som ska
visas på skärmen.