№18 Dars — Yiida action hosil qilish va u bilan ishlash

№18 Dars — Yiida action hosil qilish va u bilan ishlash

№18 Dars - Yiida action hosil qilish va u bilan ishlash

Model tayyor endi biz u bilan ishlash uchun kod yozishga kirishishimiz mumkin. Barcha mantiqiy jarayonlarni kontroller actioniga joylashtiramiz. Ro`yxatdan o`tadigan forma uchun kod talab qilinadi. Misol uchun:

public function actionLogin()
{
    $model=new LoginForm;
    if(isset($_POST['LoginForm']))
    {
        // foydalanuvchi tomonida kelayotgan ma`lumotlarni olamiz.
        $model->attributes=$_POST['LoginForm'];
// olingan ma`lumotni tekshiramiz, agar true bo`lsa oldingi pagega foydalanuvchini yo`naltiradi.   
        if($model->validate())
            $this->redirect(Yii::app()->user->returnUrl);
    }
    // login viewsiga render qilish
    $this->render('login',array('model'=>$model));
}

LoginForm modeli nusxasini hosil qilamiz, keyin agar formadagi ma`lumotlar jo`natilgan bo`lsa, $modelni $_POST[‘LoginForm’] ma`lumotlari bilan to`ldiramiz.

Keyin olingan ma`lumotni tekshiramiz va agar xato yo`q bo`lsa, foydalanuvchi pagega jo`natamiz, agar xato bo`lsa, ro`yxatdan o`tish pagega qayta yo`naltiramiz, ya`ni login viewsiga.

Eslatma: Ro`yxatdan o`tish talab qilinganda login actionida Yii::app()->user->returnUrl pagening URL ini olish uchun ishlatamiz. Yii::app()->user CWebUser class obyektining komponenti bo`lib, ma`lumotlarni olish uchun ishlatiladi, foydalanuvchining ma`lumotlarini sessiyasida saqlidi.(Misol uchun foydalanuvchining nomi shu kabilar). Bu mavzu haqida batafsil tanishmoqchi bo`lsangiz Аутентификация и авторизация bo`limini ko`rib chiqishni maslahat beramiz.

Login actionidagi quyidagi holatiga diqqat qiling.

$model->attributes=$_POST[‘LoginForm’];

Foydalanuvchi tomonidan kiritilayotgan ma`lumotlarni modelga berish bo`lib, bu mavzuda

Attribut belgilarini xavfsiz o`zlashtirish bo`limida gaplashib o`tgan edik.

Har bir modelning attributiga mos ma`lumotlar massiv ko`rinishida o`zlashtiriladi.

Demak agar $_POST[‘LoginForm’] massiv ko`rinishida saqlasak, bu ekvivalent bo`ladi quyidagi holatga:

$model->username=$_POST['LoginForm']['username'];
$model->password=$_POST['LoginForm']['password'];
$model->rememberMe=$_POST['LoginForm']['rememberMe'];

Izoh: Viewdagi kiritilayotgan maydonlar nomlarini to`g`ri ko`satish kerak. $_POST[‘LoginForm’] satr o`rniga massiv qaytaradi.C[a] ning aytilishi C modelga mos a attribut maydoni. Bizning misolda «username» attributining LoginForm[username] ko`rinishda foydalanishimiz mumkin.Endi bizda faqat login viewidagi talab qilingan maydonlarni HTML kodi orqali hosil qilish kerak.

Manba:

Web Dasturlash
№18 Dars — Yiida action hosil qilish va u bilan ishlash