מדריך Yii 2 – עבודה עם Gii – כלי ליצירה אוטומטית של קוד

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

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

במדריך הזה נלמד :

  • איך לאפשר את הפעלת הכלי Gii בשרת הפיתוח שלך
  • ליצור מחלקת ActiveRecord באמצעות Gii
  • ליצור את כל פעולות ה-CRUD באמצעות Gii
  • שינוי של קוד שנוצר ב-Gii

איך להפעיל את המודול Gii

Gii הוא מודול של Yii. וכדי להפעיל אותו, צריך לפני כן לאפשר אותו. בעיקרון , ברירת המחדל של קובץ ההגדרות נמצאת ב : config/web.php , היכנס לשם, ותשנה את השורות הרלוונטיות :

$config = [ ... ];

if (YII_ENV_DEV) {
    $config['bootstrap'][] = 'gii';
    $config['modules']['gii'] = 'yiigiiModule';
}

כמו שבוודאי שמת לב, התנאי בקטע הקוד בודק האם המשתנה YII_ENV_DEV הוא true, ואם כן, מפעיל את המודול.

משתנה זה הוא משתנה שקובע האם אתה בסביבת פיתוח או יצור (production). ואם הסביבה היא סביבת פיתוח, אז האפלקציה עושה include למחלקה שהיא המודול הזה – מחלקת yiigiiModule.

אז כדי לוודא שהמשתנה הזה מכוון אצלך על סביבת פיתוח, עליך לבדוק ש בקובץ  web/index.php (מה שנקרא entry script - הכוונה לסקריפט שדרכו מנותבת כל התנועה ב Yii) 

מופיעה ההגדרה הבאה שקובעת את ערך המשתנה ל-true  :

defined('YII_ENV') or define('YII_ENV', 'dev');

השורה הזו קובעת בפועל שאתה ב-development mode  והכלי Gii מאופשר.

עכשיו אתה יכול לגלוש אל הכלי :

http://hostname/index.php?r=gii

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

'gii' => [
    'class' => 'yiigiiModule',
    'allowedIPs' => ['127.0.0.1', '::1', '192.168.0.*', '192.168.178.20'] // adjust this to your needs
],

 

וכך נראה הכלי Gii – במסך הכניסה : 

 

2 הערות חשובות לפני שמתקדמים

  1. הכלי הולך לייצר קבצים, אז אם שרת הפיתוח שלך מבוסס לינוקס, כדאי לוודא שיש ליוזר של אפצ'ה הרשאות כתיבה מלאות.
  2. במידה ואתה מייצר הרבה קבצים, וחלקם דורסים קבצים ישנים יותר, שים לב שאתה מסמן כל מה שצריך ב-overwrite, אחרת תקבל הודעות שגיאה.

איך לייצר מחלקה של Active Record באמצעות Gii ?

כדי להשתמש ב-Gii ליצור class של Active Record, בחר ב-Model Generator, ואז מלא את הפרטים הבאים בטופס :

  • Table Name: country
  • Model Class: Country

וכך זה צריך להיראות : 

 

עכשיו, לחץ על Preview, אתה תראה את הקובץ models/Country.php ברשימת התוצאות, אתה יכול ללחוץ על שם הקובץ אם אתה רוצה לראות את תוכנו – הקוד עצמו.

כאשר משתמשים ב-Gii, אם יש קובץ קודם בעל אותו שם – הוא ידרס, אם רוצים לראות את ההבדלים בקוד לעומת הגירסה הקודמת, לחץ diff .

השלב הבא הוא ללחוץ על Generate, ואז לאשר את ה-overwrite.

יצירת CRUD עם הכלי Gii

המונח CRUD מתאר את הפעולות הבסיסיות בדאטאבייס – יצירה, קריאה, עדכון ומחיקה, וניתן ליצור את כל רצף ה-actions וה-view עם המודל והקונטרולר במהירות באמצעות Gii.

כדי לעשות זאת לחץ על CRUD Generator, ואם נמשיך עם הדוגמא של טבלת Country, אז צריך למלא את הערכים הבאים :

  • Model Class: appmodelsCountry
  • Search Model Class: appmodelsCountrySearch
  • Controller Class: appcontrollersCountryController

זה צריך להיראות כך :

והמסך הבא (אחרי לחיצה על Preview) נראה כך : 

אם יצרת במדריכים הקודמים את הקונטרולר ואת ה-Index, אז תצטרך לאשר דריסה (overwrite) אחרי לחיצה על Generate.

 נסה את זה בעצמך

כדי לראות את כל מה שנוצר , גלוש אל

http://hostname/index.php?r=country/index

 

אתה תראה רשימה של המדינות, כאשר יש מעל כל עמודה אפשרות חיפוש, ולצד כל עמודה מופיעות האפשרויות לערוך, למחוק ולצפות.

 

אפשרות העדכון נראית כך : 

 

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

  • Controller: controllers/CountryController.php
  • Models: models/Country.php and models/CountrySearch.php
  • Views: views/country/*.php

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

סיכום – שימוש בכלי Gii של Yii

בסעיף זה ראית כיצד להשתמש בחלק מיכולותיו של Gii, בין השאר גם לחולל את פעולות ה-CRUD.

 

המדריך מפורסם לפי התנאים של Yii, והמקור נמצא כאן

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *