1 follower

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 action pada gilirannya akan membuat tampilan yang menunjukkan kata "Hello" kepada pengguna akhir.

Melalui tutorial ini, Anda akan belajar tiga hal:

  1. Cara membuat action untuk menanggapi permintaan,
  2. Cara membuat view untuk menyusun konten respon, dan
  3. 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, 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 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.

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

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 di views/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 ID post-comment berkorespondensi   dengan nama kelas controller PostCommentController.

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.

Found a typo or you think this page needs improvement?
Edit it on github !