№16 Dars - Yiida forma hosil qilish.
Web ilova ishlab chiqishdagi asosiy vazifalardan biri bu - yig`ilgan foydalanuvchining ma`lumotlarini HTML forma bilan ishlatishdir.
Undan tashqari dasturchi formalarni loyihalashtirayotganda bevosita bu maydonlar majburiy to`ldirilishi kerak yoki majburiy emasligini, kiritiladigan ma`lumotni tekshirishni, kritilgan ma`lumot noto`g`ri bo`lsa shu haqda xabar berishi shuningdek ko`rsatilgan jadvalga ma`lumotlarni saqlash kabi ishlarni qila olishi mumkin. Bu jarayonlarga mos Yii o`zining MVC arxitekturasini taqdim etgan.
Yii da forma bilan ishlashdagi keyingi qadamlar quyidagilardan iborat:
- Kiritilayotgan maydonlar uchun model classini hosil qilish.
- Jo`natiladigan kodlarga ta`sir ko`rsatish uchun kontroller actionini hosil qilish.
- Kontroller actioniga biriktirilgan view fayl hosil qilish.
Forma hosil qilish unchalik qiyinchilik tug`dirmaydi. Biz form tegi bilan ishni boshlaymiz, bunda attribut actioni login action URLini olgan bo`lishi kerak. LoginForm classida e`lon qilingan attributlari uchun maydonlar qo`shishimiz kerak. Tugatayotib ma`lumotlarni jo`natuvchi button tugmasini ham qo`yish kerak. Yii viewini formasini hosil qilishda bir qancha yordamchi classlar taqdim etgan. Misol uchun:
CHtml::textField() metodi text maydon hosil qilishda, CHtml::dropDownList() ro`yhatlar uchun ishlatishimiz mumkin.
Xabarnoma:
Xaqiqiy HTML kodlardan nega unchalik foydalanilmaydi? Foydalanmaslikka asosimiz bormi? bunday yordamchilarni qanday ustun tomoni bor degan xaqli savollar tug`ilishi mumkin. Javobi oddiy yordamchilardan foydalansak ko`pgina imkoniyatlarni bizga taqdim etadi. Misol uchun quyida keltirilgan kodda text maydon hosil qilinmoqda, bunda text maydonda qachonki foydalanuvchi belgilarni o`zgartirilib serverga jo`natilsa obyekt sifatida boradi.
CHtml::textField($name,$value,array('submit'=>''));
Quyida biz CHtml yordamchi classi bilan ro`yhatdan o`tish viewi formasini hosil qilamiz.
Bu o`zgaruvchi $model LoginForm classning nusxasi.
<div class="form"> <?php echo CHtml::beginForm(); ?> <?php echo CHtml::errorSummary($model); ?> <div class="row"> <?php echo CHtml::activeLabel($model,'username'); ?> <?php echo CHtml::activeTextField($model,'username'); ?> </div> <div class="row"> <?php echo CHtml::activeLabel($model,'password'); ?> <?php echo CHtml::activePasswordField($model,'password'); ?> </div> <div class="row rememberMe"> <?php echo CHtml::activeCheckBox($model,'rememberMe'); ?> <?php echo CHtml::activeLabel($model,'rememberMe'); ?> </div> <div class="row submit"> <?php echo CHtml::submitButton('Войти'); ?> </div> <?php echo CHtml::endForm(); ?> </div><!-- form >
Misoldagi CHtml::activeLabel() metodi hosil qiladi attributga mos Label chiqaradi, agar biz ma`lumotni kiritib yuborganimizda xato qaytsa unda bizga buni CHtml::errorSummary ko`rsatadi. CHtml::activeTextField() model attributiga mos tushuvchi va aynan o`shanga ma`lumotni beruvchi maydondir.
Agar yiic script tomonidan yaratiladigan form.css faylini ishlatsak u holda bizning formamiz quyidagi ko`rinishda bo`ladi:
Formani hosil qilishda 1.1.1 versiyasidan boshlab CActiveForm yangi vidgetidan foydalanish mumkin.Bunda quyidagi holatning bir ko`rinishi.
<div class="form"> <?php $form=$this->beginWidget('CActiveForm'); ?> <?php echo $form->errorSummary($model); ?> <div class="row"> <?php echo $form->label($model,'username'); ?> <?php echo $form->textField($model,'username') ?> </div> <div class="row"> <?php echo $form->label($model,'password'); ?> <?php echo $form->passwordField($model,'password') ?> </div> <div class="row rememberMe"> <?php echo $form->checkBox($model,'rememberMe'); ?> <?php echo $form->label($model,'rememberMe'); ?> </div> <div class="row submit"> <?php echo CHtml::submitButton('Войти'); ?> </div> <?php $this->endWidget(); ?> </div><!-- form -->
Keyingi blogimiz Yiida model hosil qilish va uning ichidagi imkoniyatlar bilan tanishamiz.
Birinchi bo‘ling!