7.8 KiB
Katakan Hello
Bagian ini menjelaskan cara membuat halaman "Hello" baru dalam aplikasi Anda. Untuk mencapai tujuan ini, Anda akan membuat action dan sebuah view:
- Aplikasi ini akan mengirimkan permintaan halaman ke
action. - Dan
actionpada gilirannya akan membuat tampilan yang menunjukkan kata "Hello" kepada pengguna akhir.
Melalui tutorial ini, Anda akan belajar tiga hal:
- Cara membuat action untuk menanggapi permintaan,
- Cara membuat view untuk menyusun konten respon, dan
- bagaimana aplikasi mengirimkan permintaan ke action.
Membuat Action
Untuk tugas "Hello", Anda akan membuat action say yang membaca
parameter message dari request dan menampilkan pesan bahwa kembali ke pengguna. Jika request
tidak memberikan parameter message, aksi akan menampilkan pesan "Hello".
Info: Action adalah objek yang pengguna akhir dapat langsung merujuk ke eksekusi. Action dikelompokkan berdasarkan controllers. Hasil eksekusi action adalah respon yang pengguna akhir akan terima.
Action harus dinyatakan di controllers. Untuk mempermudah, Anda mungkin
mendeklarasikan action say di SiteController yang ada. kontroler ini didefinisikan
dalam file kelas controllers/SiteController.php. Berikut adalah awal dari action baru:
<?php
namespace app\controllers;
use yii\web\Controller;
class SiteController extends Controller
{
// ...existing code...
public function actionSay($message = 'Hello')
{
return $this->render('say', ['message' => $message]);
}
}
Pada kode di atas, action say didefinisikan sebagai metode bernama actionSay di kelas SiteController.
Yii menggunakan awalan action untuk membedakan metode action dari metode non-action dalam kelas controller.
Nama setelah awalan action peta untuk ID tindakan ini.
Untuk sampai pada penamaan action, Anda harus memahami bagaimana Yii memperlakukan ID action. ID action selalu
direferensikan dalam huruf kecil. Jika ID tindakan membutuhkan beberapa kata, mereka akan digabungkan dengan tanda hubung
(Mis, create-comment). nama metode aksi yang dipetakan ke ID tindakan diperoleh dengan menghapus tanda hubung apapun dari ID,
mengkapitalkan huruf pertama di setiap kata, dan awalan string yang dihasilkan dengan action. Sebagai contoh,
ID action create-comment sesuai dengan nama method action actionCreateComment.
Metode action dalam contoh kita mengambil parameter $message, yang nilai defaultnya adalah "Hello" (persis
dengan cara yang sama Anda menetapkan nilai default untuk fungsi atau metode apapun argumen di PHP). Ketika aplikasi
menerima permintaan dan menentukan bahwa action say bertanggung jawab untuk penanganan request, aplikasi akan
mengisi parameter ini dengan parameter bernama sama yang ditemukan dalam request. Dengan kata lain, jika permintaan mencakup
a parameter message dengan nilai"Goodbye", maka variabel $message dalam aksi akan ditugaskan nilai itu.
Dalam metode action, yii\web\Controller::render() dipanggil untuk membuat
sebuah view dari file bernama say. Parameter message juga diteruskan ke view
sehingga dapat digunakan di sana. Hasil render dikembalikan dengan metode tindakan. Hasil yang akan diterima
oleh aplikasi dan ditampilkan kepada pengguna akhir di browser (sebagai bagian dari halaman HTML yang lengkap).
Membuat View
View adalah skrip yang Anda tulis untuk menghasilkan konten respon.
Untuk "Hello" tugas, Anda akan membuat view say yang mencetak parameter message yang diterima dari metode aksi:
<?php
use yii\helpers\Html;
?>
<?= Html::encode($message) ?>
View say harus disimpan dalam file views/site/say.php. Ketika metode yii\web\Controller::render()
disebut dalam tindakan, itu akan mencari file PHP bernama views/ControllerID/ViewName.php.
Perhatikan bahwa dalam kode di atas, parameter message adalah di-yii\helpers\Html::encode()
sebelum dicetak. Hal ini diperlukan karena sebagai parameter yang berasal dari pengguna akhir, sangat rentan terhadap
serangan Cross-site scripting (XSS) dengan melekatkan
kode JavaScript berbahaya dalam parameter.
Tentu, Anda dapat menempatkan lebih banyak konten di view say. konten dapat terdiri dari tag HTML, teks biasa, dan bahkan pernyataan PHP.
Nyatanya, view say hanyalah sebuah script PHP yang dijalankan oleh metode yii\web\Controller::render().
Isi dicetak oleh skrip view akan dikembalikan ke aplikasi sebagai hasil respon ini. Aplikasi ini pada gilirannya akan mengeluarkan hasil ini kepada pengguna akhir.
Trying it Out
Setelah membuat action dan view, Anda dapat mengakses halaman baru dengan mengakses URL berikut:
https://hostname/index.php?r=site%2Fsay&message=Hello+World
URL ini akan menghasilkan halaman yang menampilkan "Hello World". Halaman yang berbagi header dan footer yang sama dengan halaman aplikasi lainnya.
Jika Anda menghilangkan parameter message dalam URL, Anda akan melihat tampilan halaman "Hello". Hal ini karena message dilewatkan sebagai parameter untuk metode actionSay(), dan ketika itu dihilangkan,
nilai default "Hello" akan digunakan sebagai gantinya.
Info: Halaman baru berbagi header dan footer yang sama dengan halaman lain karena metode yii\web\Controller::render() otomatis akan menanamkan hasil view
saykedalam apa yang disebut layout yang dalam hal ini Kasus terletak diviews/layouts/main.php.
Parameter r di URL di atas memerlukan penjelasan lebih lanjut. Ini adalah singkatan dari route, sebuah ID unik aplikasi
yang mengacu pada action. format rute ini adalah ControllerID/ActionID. Ketika aplikasi menerima
permintaan, itu akan memeriksa parameter ini, menggunakan bagian ControllerID untuk menentukan kontroler
kelas harus dipakai untuk menangani permintaan. Kemudian, controller akan menggunakan bagian ActionID
untuk menentukan action yang harus dipakai untuk melakukan pekerjaan yang sebenarnya. Dalam contoh kasus ini, rute site/say
akan diselesaikan dengan kontroler kelas SiteController dan action say. Sebagai hasilnya,
metode SiteController::actionSay() akan dipanggil untuk menangani permintaan.
Info: Seperti action, kontroler juga memiliki ID yang unik mengidentifikasi mereka dalam sebuah aplikasi. ID kontroler menggunakan aturan penamaan yang sama seperti ID tindakan. nama kelas controller yang berasal dari kontroler ID dengan menghapus tanda hubung dari ID, memanfaatkan huruf pertama di setiap kata, dan suffixing string yang dihasilkan dengan kata
Controller. Misalnya, controller IDpost-commentberkorespondensi dengan nama kelas controllerPostCommentController.
Ringkasan
Pada bagian ini, Anda telah menyentuh controller dan melihat bagian dari pola arsitektur MVC.
Anda menciptakan sebuah action sebagai bagian dari controller untuk menangani permintaan khusus. Dan Anda juga menciptakan view
untuk menulis konten respon ini. Dalam contoh sederhana ini, tidak ada model yang terlibat. Satu-satunya data yang digunakan adalah parameter message.
Anda juga telah belajar tentang rute di Yii, yang bertindak sebagai jembatan antara permintaan pengguna dan tindakan controller.
Pada bagian berikutnya, Anda akan belajar cara membuat model, dan menambahkan halaman baru yang berisi bentuk HTML.
