mirror of
https://github.com/yiisoft/yii2.git
synced 2025-08-15 23:04:54 +08:00
144 lines
7.8 KiB
Markdown
144 lines
7.8 KiB
Markdown
Katakan Hello
|
||
============
|
||
|
||
Bagian ini menjelaskan cara membuat halaman "Hello" baru dalam aplikasi Anda.
|
||
Untuk mencapai tujuan ini, Anda akan membuat [action](structure-controllers.md#creating-actions) dan
|
||
sebuah [view](structure-views.md):
|
||
|
||
* 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](structure-controllers.md#creating-actions) untuk menanggapi permintaan,
|
||
2. Cara membuat [view](structure-views.md) untuk menyusun konten respon, dan
|
||
3. bagaimana aplikasi mengirimkan permintaan ke [action](structure-controllers.md#creating-actions).
|
||
|
||
|
||
Membuat Action <span id="creating-action"></span>
|
||
---------------
|
||
|
||
Untuk tugas "Hello", Anda akan membuat [action](structure-controllers.md#creating-actions) `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](structure-controllers.md#creating-actions) adalah objek yang pengguna akhir dapat langsung merujuk ke
|
||
eksekusi. Action dikelompokkan berdasarkan [controllers](structure-controllers.md). Hasil eksekusi
|
||
action adalah respon yang pengguna akhir akan terima.
|
||
|
||
Action harus dinyatakan di [controllers](structure-controllers.md). 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
|
||
<?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()|render()]] dipanggil untuk membuat
|
||
sebuah [view](structure-views.md) 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 <span id="creating-view"></span>
|
||
---------------
|
||
|
||
[View](structure-views.md) 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
|
||
<?php
|
||
use yii\helpers\Html;
|
||
?>
|
||
<?= Html::encode($message) ?>
|
||
```
|
||
|
||
View `say` harus disimpan dalam file `views/site/say.php`. Ketika metode [[yii\web\Controller::render()|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()|HTML-encoded]]
|
||
sebelum dicetak. Hal ini diperlukan karena sebagai parameter yang berasal dari pengguna akhir, sangat rentan terhadap
|
||
[serangan Cross-site scripting (XSS)](http://en.wikipedia.org/wiki/Cross-site_scripting) 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()|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 <span id="trying-it-out"></span>
|
||
-------------
|
||
|
||
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 [[yii\web\Controller::render()|render()]]
|
||
otomatis akan menanamkan hasil view `say` kedalam apa yang disebut [layout](structure-views.md#layouts) 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](runtime-routing.md), 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 <span id="summary"></span>
|
||
-------
|
||
|
||
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.
|