«Salomlashamiz»

Ushbu bo'limda biz "Salom" so'zlari bilan yangi sahifani qanday yaratishni ko'rib chiqamiz. Siz masalani hal qilish jarayonida nazoratchi amalini va ko`rinishi:ni yaratasiz

  • Web-ilova so'rovni bajaradi va nazoratni tegishli amalga o'tkazadi;
  • Amal, o'z navbatida, "Salom" deb nomlangan ko'rinishni foydalanuvchiga ko'rsatadi.

Ushbu qo'llanmani o'rganish jarayonida siz ushbu narsalarni o'rganib chiqasiz:

  • So'rovlarga javob berish uchun qanday amalni yaratish kerak;
  • Web ilovaga javob mazmunini shakllantirish uchun qanday qilib ko`rinish, yaratish kerak;
  • Web ilova so'rovlarni qanday qilib amalga. yuboradi.

Amal yaratish

Bizning vazifamiz uchun so'rovdan message parametrini o'qiydigan va uning qiymatini foydalanuvchiga ko'rsatadigan say deb ataladigan amal kerak. Agar so'rovda message parametri bo'lmasa, amal o'z novbatida "Salom" matnini qaytaradi. > Malumot uchun: amal to'g'ridan-to'g'ri foydalanuvchi tomonidan boshqarilishi va nazoratchilar ichida guruhlarga bo'linishi mumkin. Amal natijasi foydalanuvchiga qaytariladi.

Amallar nazoratchilar (tomonidan) ichida e'lon qilinadi. Oddiylik uchun siz mavjud bo'lgan SiteController nazoratchisi ichida say amalini yaratishingiz mumkin, Ushbu nazoratchi fayli controllers/SiteControllers.php yo'li boyicha joylashgan ``php <?php

namespace app\controllers;

use yii\web\Controller;

class SiteController extends Controller {

// ...oldindan mavjud bo'lgan kod...

public function actionSay($message = 'Salom')
{
    return $this->render('say', ['message' => $message]);
}

} `

Quyidagi kodda say amali SiteController sinfi (klassi) actionSay usuli (metodi) e'lon qilinmoqda. Yii amallari usullari (metodlari) oldidan action qo'shiladi bu oddiy usullarni (metodlarni) ajratish uchun prefiksidan foydalanadi.

Malumot uchun: Amalar nomlari kichik harflar berilishi kerak.Agar identifikator (nom) bir necha so'zdan iborat bo'lsa, ular chiziq (minus -) bilan ajiraladi, yani create-comment. Amallar usullarining (metodlar) nomlari defislarni olib tashlash yo'li bilan olinib, har bir so'zni katta harfga aylantiradi va action prefiksi qo'shadi. Misol uchun, amal nomi create-comment quydagi usullga to'g'ri keladi actionCreateComment.

Yukoridagi amal - $message parametrni qabul qiladi u esa, oldindan (agar hech narsa kiritilmasa) "Salom" soziga teng. Web ilova sorovni qabul qilib say amali unga javob berishini aniqlaganda, amal parametrlari va so'rovdan kelgan ma'lumotlar parametrlar ichida sorovdagi nomlarga teng bo`lgani topib bir xil ma'lumot bilan to'ldiradi.

Amal usulida (metodida), kerakli ko'rinishni ko'rsatish uchun render() usuli (metodi) ishlatiladi. Xabarni foydalanuvchiga ko'rsatish uchun, ko'rinishga message parametri beriladi. ko'rinish yaratgan ma'lumotni return orqali web ilovaga qaytaradi, u o'z novbatida ma'lumotni foydalanuvchiga qaytaradi.

Ko'rinish yaratish

ko'rinish - bu foydalanuvchi uchun javob qaytarish skriptlar. Yuqorida dastur uchun siz say ko'rinishini yaratishingiz kerak, u o'z ichiga message o'zgaruvchini uni chaqirgan amaldan qabul qiladi:

<?php
use yii\helpers\Html;
?>
<?= Html::encode($message) ?>

say ko'rinishi views/site/say.php faylida saqlanishi kerak. Ushubu usul (metod) amalda chaqirilganda render() , u quydagi yo'l bo'yicha ko'rinish topishga harakat qiladi views/ControllerID/ViewName.php.

Aytib o'tish keraki yuqorida kodda message HTML himoyasi orqali filtrlanadi. Buni ishlatish shartdir chunki ma'lumot foydalanuvchidan kirib kelmoqda, u esa o'z yo'lida XSS ziyon o'tkazishi o'tkazishi mumkin Javascript-skripti orqali.

Siz say ko'rinishi HTML teglar, matn yoki PHP-kod bilan to'ldirishingiz mumkin. Aslini olganda say skripti render() orqali chaqirilayotgan sodda PHP-skript bo'lib chiqayotganini ko'rishimiz mumkin. Skript tomonidan shakilangan ma'lumot esa foydalanuvchiga qaytariladi.

Ishlatib ko'ramiz

Yuqorida aytib o'tilgan amalrni va amalar ko'rinishlarini yaratib bo'ganingizdan so'ng siz usu URL bo'yicha o'tishingiz mumkin:

http://hostname/index.php?r=site%2Fsay&message=Salom+dunyo

Salom, dunyo

Sizga "Salom, dunyo" matni chiqishi kerak. Header (yuqori bo'lim) va Footer (pastki bo'lim) hamma sahifalardek chiqadi. Agar siz message kiritmasangiz, siz «Salom» matnini ko'rishingiz mumkin. Bunaqa mantiq chiqishi sababi shundagi, actionSay usuli (metod)dagi message parametri oldindan "Salom" matni berilgan.

Ma'lumot uchun: Yangi sahifa hamma ishlatayotgan Header (yuqori bo'limi) va Footer (pastki bo'lim) ishlatadi, chunki render() usuli say ko'rinishini o'zi maketga views/layouts/main.php topib qo'yadi.

Parametr r qo'shimcha tushuncha ta'lab qiladi. U yo'nalishlar (route) bilan bo'liqdir va nomi boyicha kerakli amalni topib chiqaradi. Uning formati ControllerID/ActionID. Web-ilova so'rovni qabul qilishni boshlaganida u r paraterni tekshirishni boshlaydi va ControllerID ni ishlatadi, va nomi bo'yicha so'ralayotgan nazoratchini topib, ActionID bo'yicha shu topilgan nazoratchi ichidan so'raloyotgan amalni topib chiqaradi. Bizning misolimiz bo'yicha site/say so'rovi boyicha SiteController nazoratchisi ichidan say amalini chiqaradi. Natijada esa, so'rovni qabul qilish SiteController::actionSay() topshiriladi.

Ma'lumot uchun: Nazoratchilar ham hudi amalar kabi web-ilovada yagona nomga (identifikator) ega. Nazoratchilar nomlash tartibi hudi amalardaqadir. Klasslar nomlari So'larga bo'linib defizlar orqali aniqlanadi, so'zlarni birinchi katta harf bilan yozib o'tib va oxiriga Controller qo'shib qidirishni boshlaydi. Misol uchun, nazoratchi post-comment nomi PostCommentController klassiga teng bo`ladi.

Xulosa

Bu bo'limda biz nozaratchilar va ularning ko'rinishlari mavzusini MVC-tuzilmasi ichida yoritib berishga harakat qildik. Siz nazoratchi qismi bo'lgan so'rovlarni qabul qiluvchi amalni yasab so'rovga kerakli ko'rinishni javob tariqasida shakilantirishni ko'rdingiz. Ushbu misolda hech ham modellar ishlatilmadi, chunki misolar juda ham sodda bo'lgan message parametri bo'yicha uni foydalanuvchiga qaytargan.

Shuningdek siz yo'nalishlar (route) tartibi bilan tanishtingiz, bu esa foydalanuvchi so'roviga kerakli nazoratchini topib foydalanuvchiga javob berish jarayonida juda ham muhim o'ringa egadir.

Keyingi bo'limda siz modelar nimaligi va uni qandey yaratish kerakligini va HTML-shaklrar bilan ishlashni o'rganasiz.