Parameter dalam Rute dalam MVC dalam PHP
Dalam pelajaran sebelumnya, rute kami mempunyai alamat tetap. Sebenarnya mekanisme penghalaan lebih rumit - adalah mungkin untuk membuat sebahagian daripada URI halaman masuk ke dalam parameter bernama, yang kemudiannya boleh diakses dalam pengawal.
Katakan, sebagai contoh, alamat kami kelihatan
seperti ini: /test/param1/param2/,
di mana param1 dan param2 adalah
tali rentetan rawak. Pada masa yang sama, kami mahu
alamat dalam bentuk ini diproses oleh satu tindakan pengawal.
Untuk melakukan ini, anda perlu mencipta nama parameter
dan letakkan titik dua di hadapannya, seperti ini:
<?php
use \Core\Route;
return [
new Route('/test/:var1/:var2/', 'page', 'act'),
];
?>
Dalam kes kami, ia akan berlaku bahawa semua permintaan
jenis /test/parameter1/parameter2/
akan masuk ke tindakan act. Pada
masa yang sama, parameter pertama tindakan ini akan
menerima tatasusunan bersekutu dengan parameter:
teks yang akan berada di tempat parameter pertama,
masuk ke dalam elemen tatasusunan dengan kunci 'var1',
dan teks parameter kedua - ke dalam 'var2'.
Katakan, sebagai contoh, yang berikut ditaip
dalam bar alamat: /test/eee/bbb/. Mari
kita lihat apa yang akan dikandungi oleh parameter pertama
tindakan:
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
public function act($params)
{
var_dump($params); // ['var1' => 'eee', 'var2' => 'bbb']
}
}
?>
Buat pengawal NumController,
dan di dalamnya - tindakan sum. Biarkan
tindakan ini memproses alamat dalam bentuk berikut:
/nums/:n1/:n2/:n3/, di mana parameternya
adalah beberapa nombor. Lakukan supaya
jumlah nombor yang dihantar dipaparkan pada skrin.