Parameetrite kasutamine marsruutides MVC-s PHP-s
Vaatame kirjeldatud rakendamist
elulähedasemal näitel. Olgu meie kontrolleril
PageController lehekülgede massiiv
(need andmed peaks tagastama mudel, kuid
mudelitega me pole veel tegelema hakanud, seega olgu
andmed praegu lihtsalt kontrolleris):
<?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',
];
}
}
?>
Teeme meetodi show, mis
kuvab ekraanil lehekülje kindla
numbriga (id):
<?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()
{
// siin kuvame lehekülje kindla numbriga
}
}
?>
Olgu aadressil /page/1/
kuvatakse esimese lehekülje tekst,
aadressil /page/2/ -
teise lehekülje tekst ja nii edasi. Teeme
vastava marsruudi:
<?php
use \Core\Route;
return [
new Route('/page/:id/', 'page', 'show'),
];
?>
Rakendame kirjeldatud meetodi 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'] ]; // kuvame lehekülje numbri järgi
}
}
?>
Rakendage kontroller UserController,
mis sisaldab järgmist massiivi:
<?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],
];
?>
Kontrolleris UserController tehke
meetod show, mis kuvab
kasutaja kindla id järgi. Olgu see
kättesaadav järgmisel kujul oleval aadressil:
/user/:id/.
Kontrolleris UserController tehke
meetod info, mis kuvab
antud kasutaja nime või vanuse. Olgu see
meetod kättesaadav järgmisel
kujul oleval aadressil: /user/:id/:key/, kus key
omab väärtust 'name', 'age'
või 'salary'.
Kontrolleris UserController tehke
meetod all, mis kuvab
kõikide kasutajate loendi ekraanile. Olgu see meetod
kättesaadav järgmisel kujul oleval aadressil:
/user/all/ (parameetreid siin ei
ole).
Kontrolleris UserController tehke
meetod first, mis kuvab
N esimese kasutaja loendi ekraanile. Olgu see
meetod kättesaadav järgmisel kujul oleval aadressil: /user/first/:n/, kus parameetris
on kasutajate arv, mida tuleb
ekraanile kuvada.