0 follower

יצירת פעולה

לאחר שיש ברשותנו מודל, אנו יכולים להתחיל לכתוב לוגיקה שיכולה לתפעל את המודל. אנו כותבים את הלוגיקה הזו בתוך פעולה בקונטרולר. עבור דוגמאת טופס ההתחברות, הקוד הבא הכרחי:

public function actionLogin()
{
    $model=new LoginForm;
    if(isset($_POST['LoginForm']))
    {
        // אוסף את הקלט של המשתמש
        $model-»attributes=$_POST['LoginForm'];
        // מאמת את הקלט של המשתמש במידה והכל עבר בהצלחה המשתמש יועבר לעמוד הקודם
        if($model-»validate())
            $this-»redirect(Yii::app()-»user-»returnUrl);
    }
    // הצג את טופס ההתחברות
    $this-»render('login',array('model'=»$model));
}

בקוד למעלה, אנו קודם יוצרים אובייקט של המודל LoginForm; במידה והבקשה הינה בקשת POST (שבעצם אומר שהטופס נשלח), אנו מאכלסים את model$ עם הנתונים שהגיעו דרך

$_POST['LoginForm']

לאחר מכן אנו מאמתים את הנתונים ובמידה והכל עבר בהצלחה, מעבירים את המשתמש לעמוד הקודם בו הוא היה צריך להתחבר. במידה וההתחברות נכשלת, או המשתמש רואה את הטופס בפעם הראשונה, אנו מציגים לו את קובץ התצוגה login שתוכנו יתואר בחלק הבא.

» Tip|טיפ: בפעולת ה login, אנו משתמשים ב Yii::app()-»user-»returnUrl בכדי לקבל את הקישור של העמוד הקודם בו המשתמש היה צריך להתחבר. הרכיב Yii::app()-»user הוא מסוג CWebUser (או מחלקות היורשות ממנו) המייצג מידע אודות המשתמש (לדוגמא שם משתמש, סטטוס). למידע נוסף יש לקרוא אודות אימות משתמשים וניהול גישות.

בו נתייחס לביטוי הבא המופיע בפעולת ה login למעלה:

$model-»attributes=$_POST['LoginForm'];

כפי שכבר הסברנו באבטחת הצבת מאפיינים, שורת קוד זו מאכלסת את המודל עם הקלט שהגיע מהמשתמש. המאפיין attributes מוגדר על ידי CModel המצפה למערך של מפתחות וערכים, ומגדירה כל אחד מהערכים למאפיין המתאים לו במודל. לכן

$_POST['LoginForm']

מספק לנו מערך זה, הקוד למעלה יכול להיות זהה לקוד הארוך הבא (בהנחה שכל מאפיין נוכח במערך):

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

» Note|הערה: בכדי לאפשר ל

» ~~~ » $_POST['LoginForm'] » ~~~

» לספק לנו מערך במקום סטרינג, אנו דבקים במוסכמות של מתן שמות מתאימים למאפיינים של מודל בטופס. במיוחד, עבור שדה טקסט בשם המאופיין בעזרת המאפיין a של המחלקה C, אנו נקרא לו C[a]. לדוגמא, אנו נשתמש ב LoginForm[username] בכדי לתת שם לשדה טקסט המקושר למאפיין username במודל.

כל מה שנותר לעשות הוא ליצור את קובץ התצוגה login שאמור להכיל טופס HTML עם שדות הקלט הדרושים.

Found a typo or you think this page needs improvement?
Edit it on github !