№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:

  1. Kiritilayotgan maydonlar uchun model classini hosil qilish.
  2. Jo`natiladigan kodlarga ta`sir ko`rsatish uchun kontroller actionini hosil qilish.
  3. 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.

Manba:

yii php dars Framework forma 26-Oktabr 19:45 723

JONNY

Muallif haqida

JONNY Arduino, Java, C#, Android, Windows, Linux, Debian, Javascript.


Blogdagi so‘nggi maqolalar:


Birinchi bo‘ling!

Iltimos, fikr bildirish uchun saytga kiring yoki ro‘yxatdan o‘ting!