Yii hammasi 0 dan
Salom. Oldingi maqolani o’qigan bo’lsangiz (Yii boshlovchilar uchun) o’qib oling. Agar Yii ni o’rnatishni bilsangiz demak siz to’g’ri yo’ldasiz. Keling gapni ko’p cho’zmayda ishga o’tay.
Maqolani o’qishdan oldin, web serverda sayt2.uz degan host yarating. sayt2.uz fayllari bo’lsa /var/www/sayt2 papkasida joylashsin. Keyin /var/www/sayt2 ichiga «framework» papkasini ko’chiring va hech nima qilmang. Ya’ni webapp ni o’rnatmang. Agar framework papkasini ko’chirib bo’lgan bo’lsangiz, sekin ishni boshlaymiz.
/var/www/sayt2 papkasi ichiga quyidagi fayl va papkalarni yarating:
assets — papkasi asosay JS va CSS larni o’zida saqlaydi
protected — bu bizning asossiy papkamiz
protected/.htaccess — fayl. Ichiga «deny from all» deb yozamiz. Ya’ni protected papkasi ichiga foydalanuvchi (browser) larga ruxsat berilmanga.
index.php — bu php fayl.
Avvalo ishni boshlashdan oldin index.php fayli ichiga quyidagini yozamiz.
run();
Ushbu kod deyarli o’zgarmaydi, har doim shu ko’rinishda ishlatsangiz bo’ladi.
Endi barcha o’zgarishlar protected papkasi ichida bo’ladi. Shu papka ichiga quyidagi fayl va papkalarni yarating:
controllers — nazorat fayllarini saqlaydigan papka
config — sayt sozlashlarini saqlaydigan papka
models — modellarni saqlaydigan papka
views — ko’rinishlarni saqlaydigan papka
Agar papkalarni yaratib bo’lgan bo’lsangiz, endi config papkasi ichiga main.php ni yarating va quyidagi kodni kiriting.
dirname(__FILE__).DIRECTORY_SEPARATOR.'..',
//sayt nomi
'name'=>'Sayt2.uz',
/*
sayt ishlashi mobaynida chaqiriladigan fayllar
manzillarini ko'rsatish
bizni holatda protected/models papkasidagi fayllardir
application = protected papkasini ko'rsatadi
bular haqida keyinroq to'liq yozaman
controllers dagilarni avtomat ravishda yuklaydi Yii
*/
'import'=>array(
'application.models.*',
),
'components' => array(
)
);
Bu keltirganim eng minimal holatdagisidir. Sekin-sekin har xir sozlashlar qo’shamiz, keyinchalik.
Agar saqlagan bo’lsangiz endi controllers papkasi ichiga SiteController.php faylini yaraing va ichiga quyidagini yozing.
renderText("Salom Yii");
}
}
Shuni yozib sayt2.uz saytiga kirsangiz «Salom Yii» degan yozuv chiqishi lozim. Agar chiqqan bo’lsa demak davom etamiz.
Endi views papkasiga o’tamiz. views papkasi ichiga site papkasini yarating va shu site papkasi ichiga index.php faylini yaratib, ichiga
Salom Yii. Man index.php view (ko'rinish) fayliman. Mening manzilim:
deb yozing.
Endi SiteController.php ichiga kirib
//Shu qatorni
$this->renderText("Salom Yii");
//ushbu qatorga almashtiring
$this->render("index")
va site2.uz boshdan kiring, shunda Salom Yii. Man index.php view (ko’rinish) fayliman. Mening manzilim: /var/www/site2/protected/views/site/index.php ko’rinishidagi natija chiqishi lozim.
Agar natija chiqqan bo’lsa demak siz hammasini 100% o’zlashtirdingiz. Model bilan ishlashni keyinroq ko’rib chiqamiz, unda oldin esa quyidagi oddiy savollarga javob beraylik.
- Nimaga SiteController deb yaratildi va uni o’zgartisa bo’ladimi boshqa kontrollerga?
- Nimaga actionIndex yozdik va nimaga u birinchi bo’lib chaqiriladi?
- $this->renderText va $this->render nima uchun kerak?
Nimaga SiteController deb yaratildi va uni o’zgartisa bo’ladimi boshqa kontrollerga? ga javob.
framework/web/CWebApplication.php ni ochib ko’rsangiz shunda CLASS ichida $defaultController nomli o’zgaruvchiga ‘site’ deb yozilgan. Demak bu birinchi yuklanadigan kontroller nomi. Bu o’zgaruvchini o’zgartirish uchun config/main.php ichiga
...
//sayt nomi
'name'=>'Sayt2.uz',
'defaultController' => 'first',
...
kabi ko’rinishda yozing.
ESLATMA: Hech qachon framework papkasi ichidagi fayllarni o’zgartirmang.
Keyin controllers/FirstController.php deb yaratib ichiga
renderText("Man FirstController man");
}
}
ni yozib sayt2.uz ga kirsangiz «Man FirstController man» yozuvi chiqishi kerak. Agar FirstControlleri ichida $this->render(…) ko’rinishida ishlatsangiz, views papkasi ichiga first papkasini yaratib keyin ishlating.
Umuman birinchi chaqiriladigan kontroller sinfi (class) nomi $defaultController da ko’rsatilgan nom + Controller so’z, ya’ni
{defaultController}Controller
shu kontrollerga tegishli bo’lgan view (ko’rinish) lar esa, views/{defaultController}/ papkasi ichida yotadi.
Nimaga actionIndex yozdik va nimaga u birinchi bo’lib chaqiriladi? ga javob.
Endi framework/web/CController.php faylini oching va $defaultAction o’zgaruvchisini toping. Agar ko’gan bo’lsangiz $defaultAction = ‘index’ turibdi. Bu degani actionIndex funksiyasini birinchi bo’lib chaqir deganidir. Teskarisiga: birinchi chaqiriladigan funcksiya nomi «action» so’zi + $defaultAction qiymatidan yasaladi.
Endi FirstController.php siga quyidagini yozing.
renderText("Man FirstController man");
}
public function actionEntry()
{
$this->renderText("Man FirstController dagi actionEntry funksiyasiman");
}
}
Agar site2.uz saytiga kirganingizda «Man FirstController dagi actionEntry funksiyasiman» yozuvi chiqsa demak hammasi OK.
E’tibor bergan bo’lsangiz framework papkasi ichidagi fallardagi o’zgaruvchilarni o’zimiz yaratgan fallarda ham o’zgartirsak bo’larkan. Bularni qayerda o’zgartirish haqida sekin sekin o’rganamiz.
$this->renderText va $this->render nima uchun kerak? ga javob.
$this->renderText — bu o’z ma’nosidan ko’rinib turibdiki, foydalanuvchiga (browserga) bironbir tekstni chiqarishdir.
$this->render — bu bo’lsa, views/{contorllerNomi} ichidagi fayllardan birontasini chaqir deganidir. Bizni misolda: $this->render(«index») bu views/site/index.php faylini chaqir degan ma’noni beradi. E’tibor bergan bo’lsangiz $this->render funksiyasi parametriga views dagi fayllar PHP kengaytmasisiz yozilarkan.
Oddiy PHP misolida etsam:
$this->renderText(«123») bu — oddiy echo «123»;
$this->render(«index») bu — echo file_get_contents(«/views/site/index.php»)
ESLATMA: $this->renderText va $this->render funksiyalari Yii da bu ko’rinishida yozilmagan. Man siz tushinishingiz uchun shu misolni keltirdim. Bu funksiyalarrda yana bir qancha parametrlar mavjud.
Mana shuning bilan ikkinchi maqola ham tugadi. Agar savollar bo’lsa marhamat.
Keyingi maqola componentlar haqida
Texnologiyalar
Yii hammasi 0 dan