Bagian ini menjelaskan cara membuat halaman "Hello" baru dalam aplikasi Anda. Untuk mencapai tujuan ini, Anda akan membuat action dan sebuah view:
action
.action
pada gilirannya akan membuat tampilan yang menunjukkan kata "Hello" kepada pengguna akhir.Melalui tutorial ini, Anda akan belajar tiga hal:
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, 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).
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 render()
disebut dalam tindakan, itu akan mencari file PHP bernama views/ControllerID/ViewName.php
.
Perhatikan bahwa dalam kode di atas, parameter message
adalah di-HTML-encoded
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 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.
Setelah membuat action dan view, Anda dapat mengakses halaman baru dengan mengakses URL berikut:
http://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 render() otomatis akan menanamkan hasil view
say
kedalam 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-comment
berkorespondensi dengan nama kelas controllerPostCommentController
.
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.
Found a typo or you think this page needs improvement?
Edit it on github !
Signup or Login in order to comment.