0 follower

יצירת אפליקצית Yii ראשונה

בכדי לקבל ניסיון התחלתי עם Yii, אנו מתארים בחלק זה כיצד ליצור את האפליקציה הראשונה שלנו ב Yii. אנו נשתמש בכלי yiic המאפשר יצירה אוטומטית של קוד בעבור משימות מסויימות. לנוחות, אנו מניחים ש YiiRoot הינה התיקיה בה Yii מותקן, ו WebRoot הינה התיקיה הראשית של שרת הווב שלנו.

יש להריץ את yiic בשורת הפקודות בצורה הבאה:

% YiiRoot/framework/yiic webapp WebRoot/testdrive

» Note|הערה: בעת הרצת yiic על גבי מחשבים Mac OS, Linux או Unix, יהיה צורך בשינוי הרשאות של קובץ ה yiic בכדי שיהיה ניתן להריץ אותו. לחלופין, ניתן להריץ את הכלי בצורה הבאה, » ~~~ » % cd WebRoot/testdrive » % php YiiRoot/framework/yiic.php webapp WebRoot/testdrive » ~~~

זה יצור שלד לאפליקצית Yii תחת התיקיה WebRoot/testdrive. לאפליקציה יש מבנה של תקיות שנחוץ למרבית אפליקציות ה Yii.

ללא צורך בכתיבת שורת קוד אחת, אנו יכולים לנסות את האפליקציה שיצרנו כרגע על ידי כניסה לקישור הבא בדפדפן:

http://hostname/testdrive/index.php

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

עמוד הבית

עמוד הבית

עמוד יצירת הקשר

עמוד יצירת הקשר

עמוד יצירת קשר עם שגיאות

עמוד יצירת קשר עם שגיאות

עמוד יצירת קשר לאחר שליחת הטופס בהצלחה

עמוד יצירת קשר לאחר שליחת הטופס בהצלחה

עמוד התחברות

עמוד התחברות

הדיאגרמה הבאה מציגה את מבנה התיקיות של האפליקציה שלנו. אנא קרא אודות מוסכמות בכדי לקבל הסבר מדוייק למבנה זה.

testdrive/
   index.php                 קובץ הכניסה הראשי של האפליקציה
   index-test.php            קובץ הכניסה הראשי למטרת בדיקות
   assets/                   מכיל קבצי נכסים הנגישים למשתמשים
   css/                      מכיל קבצי css
   images/                   מכיל תמונות
   themes/                   מכיל תבניות עיצוב לאפליקציה
   protected/                מכיל קבצים מוגנים של האפליקציה
      yiic                   קובץ פקודות עבור לינוקס ויוניקס
      yiic.bat               קובץ פקודות עבור וינדווס
      yiic.php               קובץ פקודות PHP
      commands/              מכיל פקודות 'yiic' מותאמים אישית
         shell/              מכיל פקודות 'yiic shell' מותאמים אישית
      components/            מכיל רכיבים אשר משתמשים בהם שוב ושוב
         Controller.php      מחלקת הבסיס לכל הקונטרולרים
         Identity.php        מחלקת הזיהוי של משתמשים
      config/                מכיל קבצי הגדרות
         console.php         קובץ הגדרות לאפליקציה דרך מסוף
         main.php            קובץ הגדרות לאפליקצית ווב
         test.php            קובץ הגדרות לבדיקות פונקצנליות
      controllers/           מכיל קבצי מחלקות קונטרולר
         SiteController.php  קונטרולר ברירת המחדל
      data/                  מכיל את מסדי הנתונים לדוגמא
         schema.mysql.sql    תרשים מסד הנתונים של MySQL
         schema.sqlite.sql   תרשים מסד נתונים של SQLite
         testdrive.db        קובץ מסד הנתונים לדוגמא של SQLite
      extensions/            מכיל הרחבות צד שלישי
      messages/              מכיל קבצי תרגום
      models/                מכיל קבצי מחלקות המודל
         LoginForm.php       מודל הטופס לפעולה של התחברות
         ContactForm.php     מודל הטופס לפעולה של יצירת קשר
      runtime/               מכיל קבצים זמניים
      tests/                 מכיל קבצי סקריפט לבדיקה
      views/                 מכיל קבצי תצוגה ותבניות של קונטרולרים
         layouts/            מכיל קבצי תבניות
            main.php         התבנית הראשית אשר מופיע בכל העמודים
            column1.php      תבנית לעמודים אשר משתמשים בעיצוב של עמודה אחת
            column2.php      תבנית לעמודים אשר משתמשים בעיצוב של שני עמודות
         site/               מכיל קבצי תצוגה לקונטרולר 'site'
             pages/           מכיל עמודים סטטיים
                about.php    קובץ התצוגה לעמוד אודות
            contact.php     קובץ תצוגה לעמוד יצירת קשר
            error.php        קובץ תצוגה להצגת שגיאות במידה ויש
            index.php        קובץ תצוגה לפעולה 'index'
            login.php        קובץ תצוגה לפעולה 'login'

1. התחברות למסד נתונים

מרבית אפליקציות הווב מגובות בעזרת מסד נתונים. אפליקצית הניסיון שלנו היא אחת מהם. בכדי להשתמש במסד נתונים, אנו צריכים להגדיר לאפליקציה כיצד להתחבר אליה. זה נעשה בקובץ הגדרות האפליקציה אשר ממוקם WebRoot/testdrive/protected/config/main.php, המובלט בצורה הבאה,

return array(
    ......
    'components'=»array(
        ......
        'db'=»array(
            'connectionString'=»'sqlite:protected/data/testdrive.db',
        ),
    ),
    ......
);

הקוד למעלה מנחה את Yii שהאפליקציה צריכה להתחבר למסד נתונים SQLite תחת WebRoot/testdrive/protected/data/testdrive.db בעת הצורך. מסד הנתונים SQLite כבר כלול בשלד האפליקציה שיצרנו זה עתה. מסד נתונים מכיל טבלה אחת בלבד בשם tbl_user:

CREATE TABLE tbl_user (
    id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
    username VARCHAR(128) NOT NULL,
    password VARCHAR(128) NOT NULL,
    email VARCHAR(128) NOT NULL
);

במידה והינך רוצה לעבוד עם מסד נתונים מסוג MySQL במקום, תוכל להשתמש בקובץ התרשים של MySQL המצורף הנמצא ב WebRoot/testdrive/protected/data/schema.mysql.sql בכדי ליצור את מסד הנתונים.

» Note|הערה: בכדי להשתמש באפשריות מסדי הנתונים, אנו צריכים להתקין ולהפעיל את תוסף ה PHP בשם PDO ואת התוספים הספציפים לדרייברים בהם אנו נשתמש. בעבור אפליקצית הבדיקה הזו אנו צריכים להפעיל את התוספים php_pdo ו php_pdo_sqlite.

2. יישום פעולו CRUD

עכשיו זה החלק המהנה. אנו נרצה ליישם את פעולות ה-CRUD שזה קיצור של יצירה, קריאה, עדכון, מחיקה (Create, Read, Update, Delete) עבור הטבלה User שהרגע יצרנו. אפשרות זו הכרחית עבור אפליקציות אשר תלויות במשתמשים במערכת. במקום לבזבז את הזמן לכתיבת הקוד עצמו, אנו נשתמש ב-Gii -- מחולל קוד מבוסס אינטרנט (ווב).

» Info|מידע: Gii קיים החל מגרסא 1.1.2. עבור גרסאות ישנות יותר, אנו יכולים להשתמש בכלי yiic בכדי להשיג את אותה המטרה. למידע נוסף, אנא עיין במדריך ליצירת פעולות CRUD על ידי הכלי yiic. יישום פעולות CRUD בעזרת yiic

הגדרת Gii

בכדי להשתמש ב Gii, אנו קודם צריכים לערוך את הקובץ WebRoot/testdrive/protected/config/main.php, הידוע בשמו כ-קובץ הגדרות האפליקציה.

return array(
    ......
    'import'=»array(
        'application.models.*',
        'application.components.*',
    ),
 
    'modules'=»array(
        'gii'=»array(
            'class'=»'system.gii.GiiModule',
            'password'=»'יש להזין סיסמא כאן',
        ),
    ),
);

לאחר מכן, יש לגשת לקישור http://hostname/testdrive/index.php?r=gii. אנו נראה מסך המבקש מאתנו להזין סיסמא, אותה סיסמא שציינו בשלב הקודם בקוד המוצג למעלה.

יצירת מודל משתמשים

לאחר ההתחברות, יש ללחוץ על הקישור Model Generator. זה יביא אותנו לעמוד יצירת מודל הבא,

יצירת מודל

יצירת מודל

בשדה של Table Name יש להזין tbl_user. בשדה של Model Class, יש להזין User. לאחר מכן יש ללחוץ על כפתור Preview. זה יציג לנו את הקוד שיווצר. כעת יש ללחוץ על כפתור Generate. קובץ חדש בשם User.php יווצר תחת התיקיה protected/models. כפי שאנו נסביר במהלך המדריך הזה, מחלקת המודל User שהרגע יצרנו מאפשרת לנו לתקשר עם הטבלה tbl_user אשר נמצאת תחת המחלקה באופן מונחה עצמים.

יצירת קוד CRUD

לאחר יצירת קובץ מחלקת המודל, אנו ניצור את הקוד אשר מיישם את פעולות ה CRUD עבור המשתמש. אנו בוחרים במחולל ה-CRUD במערכת ה-Gii, כפי שמוצג בתמונה למטה,

מחולל CRUD

מחולל CRUD

בשדה Model Class, יש להזין User. בשדה Controller ID, יש להזין user (באותיות קטנות בלבד). עכשיו יש ללחוץ על כפתור התצוגה מקדימה - Preview ולאחר מכן על כפתור היצירה - Generate. סיימנו עם יצירת הקוד עבור פעולות ה-CRUD.

גישה לעמודים הנוצרו על ידי CRUD

הבא ונראה את התוצאה הסופית של העבודה שנעשתה:

http://hostname/testdrive/index.php?r=user

עמוד זה יציג רשימה של רשומות משתמשים מהטבלה tbl_user.

לחץ על כפתור ה Create User בעמוד. אנו נעבור לעמוד ההתחברות במידה ולא התחברנו עדיין. לאחר ההחברות, אנו נראה טופס שמאפשר לנו להוסיף משתמש חדש. מלא את הטופס ולחץ על כפתור Create. במידה וישנם שגיאות כלשהם בטופס או בתוכן שהוזן, תוצג שגיאה שתמנע מאיתנו לשלוח את הטופס. בחזרה לעמוד רשימת המשתמשים, אנו אמורים לראות את המשתמשים החדשים אותם יצרנו ברשימה.

חזור על השלבים למעלה כדי להוסיף עוד משתמשים. שים לב שעמוד רשימת המשתמשים יציג עמודים אוטומטית אם ישנם יותר מדי משתמשים המוצגים בעמוד אחד.

אם נתחבר כמנהלים עם הפרטים admin/admin, אנו נוכל לצפות בעמוד ניהול המשתמשים בקישור הבא:

http://hostname/testdrive/index.php?r=user/admin

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

כל האפשרויות הללו מגיעות ללא צורך בכתיבת שורת קוד אחת!

עמוד ניהול משתמשים

עמוד ניהול משתמשים

עמוד יצירת משתמש חדש

עמוד יצירת משתמש חדש

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