CakePHP. ثطای ایؼبز سغبثك ثب ٘ؿرٝ ٞبی. 4. ٘بچبض٘س وٝ ذیّی اظ لبثّیز
ٞبی ..... schema.mysql.sql the DB schema for the sample MySQL database.
Yii Framework هشرغ فبسعی ّ ساٌُوبی ػولی اعتفبدٍ
ثشای اًتؾبس دس ّة تبثغتبى 0991 تشروَ ّ تبلیف :ػلی ثشریبى
0
ایي کتبة ثشای اعتفبدٍ دس ایٌتشًت ّ ثَ فْست سایگبى اسائَ ؽذٍ اعت. ُشگًَْ اعتفبدٍ اص هغبلت ثب رکش هٌجغ ثالهبًغ اعت.
2
.1
.2
.3
.4
مقذمو FrameworkYii .aچیغت؟ .bثشخی اص ّیژگی ُبی Yii Framework .cپیؼ ًیبصُبی لجل اص ؽشّع کبس .dچَ ثشًبهَ ُبیی سا ثب Yiiهی تْاى تْلیذ کشد ً .eقت Yii Framework .fعبخت اّلیي پشّژٍ .gاثضاس خظ فشهبىyiic .hپْؽَ ُب ّ فبیلِبی عبختَ ؽذٍ .iهضیظ هٌبعت ثشای کذ ًْیغی .jهشاصل دٍ گبًَ تْلیذ ثشًبهَ .kچِبس لغوت افلی ُش ثشًبهَ ً MVCاجرای برنامو MVC .aچیغت Application .b Entry Script .c Bootstrap .d Config .e .fاًْاع صبلت ارشای ثشًبهَ .gهشاصل عبخت ثشًبهَ .hهشاصل ارشای یک ثشًبهَ کنترلر ً .aوْداس اسث ثشی ُبی کٌتشلشُب .bهؼشفی کٌتشلش .cپبساهتشُبی خْدکبس اکؾي .dپبساهتشُبی ػوْهی لبثل تؼشیف دس کٌتشلش .eهتذُبی لبثل اعتفبدٍ دس کٌتشلش .fهتذ تؼشیف ؽذٍ loadModel .gهذیشیت دسخْاعتِبی کبسثش ً .hکبتی دس هْسد کٌتشلشُب مذل ىا ً .aوْداس اسث ثشی ُبی هذل .bاًْاع هذل .cهتذ ُبی تؼشیف ؽذٍ دس ّ CModelلبثل اعتفبدٍ دس کلیَ کالعِبی هذل .dاًْاع Validator ُ alias .eبی هؼشّف ثشای اػتجبس عٌزی .fچٌذ هخبل اص اػتجبس عٌزی ُب ً .gضٍْ تؼشیف ّ اعتفبدٍ اص Capcha .hعٌبسيْ ُب يب عیبعت ُبي اػتجبس عٌزي Safe Attributes .iچیغت .jپیبهِبي خغبي فبدس ؽذٍ .kتؼییي پیبم خغب .lهتذ ُبی تؼشیف ؽذٍ دس ّCActiveRecordلبثل اعتفبدٍ دس کالعِبی هذل ًْع CActiveRecord 9
.mهتذ ُب ّ هتغیشُبی تؼشیف ؽذٍ دس class CActiveRecordMetaDataهْرْد دس فبیل CActiveRecord .nدعتشعی ثَ هذل اص عشیك کٌتشلش ً .oکبت الصم دس عشاصی هذل ً .5یٌ ىا .aهؼشفی ّیْ ُب .bاسعبل پبساهتشُب ّ همبدیش آًِب اص کٌتشلش ثَ ّیْ .cفشاخْاًی یک ّیْ دس ّیْ دیگش .dدعتشعی ثَ کٌتشلش اص داخل ّیْ .eدعتشعی ثَ ّیْ اص عشیك کٌتشلش .fدعتشعی ثَ خشّری هذل دس ّیْ ً .gکبت الصم دس عشاصی view .hهؼشفی لبلت ُب .iلشاس دادى یک layoutدسّى layoutدیگش Partial view .j System View .k Widget .l .mعبخت یک Widgetدلخْاٍ Customizing Widgets Globally .n Portlet .o CActiveDataProvider .p .qکالط CHtml Theming .r .6بانک ىای اطالعاتی .aاًْاع سّػ کبس ثب ثبًک اعالػبتی .bاتقبل ثَ ثبًک اعالػبتی DAO .c .iارشای دعتْسات SQL .iiفشاخْاًی ًتبیذ ً .iiiضٍْ کبس ثب تشاکٌؼ ُب .ivاًمیبد پبساهتش ُب .vاًمیبد فیلذُب .viاعتفبدٍ اص Table Prefix Query Builder .d .iهضایبی سّػ Query Builder .iiایزبد دعتْسات .iiiایزبد پشط ّ رْ ُب .ivارشای پشط ّ رْ ُب .vثَ دعت آّسدى ػجبست SQLایزبد ؽذٍ .viثَ کبس ثشدى دعتْسات ربیگضیي .viiکبس ثب چٌذ پشط ّ رْ .viiiپشط ّ رْ ُبی کبس ثب دادٍ .ixپشط ّ رْ ُبی کبس ثب عبختبس Active Record .e .iاتقبل ثَ ثبًک اعالػبتی 4
.iiتؼشیف AR Class .iiiعبخت سکْسُب .ivدعتشعی ثَ همذاس یک فیلذ اص سکْسد .vاعتفبدٍ اص تْاثغ ُبعت .viثَ سّص سعبًی سکْسدُب خْاًذى سکْسد ُب .viiصزف سکْسد ُب .viiiاػتجبس عٌزی دادٍ ُب .ixچٌذ هتذ هفیذ دس کالط هذل .xثَ کبسگیشی تشاکٌؼ ُب دس AR Named Scopes .xi .fثبًک اعالػبتی ساثغَ ای ً .iضٍْ تؼشیف یک ساثغَ دس هذل .iiارشای پشط ّ رْ ُبی ساثغَ ای .iiiارشای پشط ّ رْ ُبی ساثغَ ای ثذّى اعتفبدٍ اص هذل ُبی داسی ساثغَ .ivگضیٌَ ُبی پشط ّ رْ ُبی ساثغَ ای .vفیلذ ُبی ثب ًبم تکشاسی .viگضیٌَ ُبی پشط ّ رْی ساثغَ ای پْیب .viiکبسایی پشط ّ رْ ُبی دس ساثغَ .viiiپشط ّ رْ ُبی اعتبتیک .ixپشط ّ رْ ُبی ساثغَ ای ثب Named Scopes .xپشط ّ رْ ُبی ساثغَ ای ثب through .gهِبرشات ثبًک اعالػبتی .7ماژًل ىا ً کامپٌننت ىا .aهؼشفی هبژّل .bهضایبی اعتفبدٍ اص هبژّل .cعبخت یک هبژّل رذیذ ً .dضٍْ اعتفبدٍ اص هبژّل .eهؼشفی کبهپًٌْت ُب ً .fضٍْ دعتشعی ثَ یک Component .gاًْاع Component .hتؼشیف ّاعتفبدٍ اص یک کبهپًٌْت .iکبهپًٌْت ُبی پیؼ فشك .8تشخیص ىٌیت کاربر .aتؾخیـ ُْیت کبسثش ّ صذّد دعتشعی .9فرم ىا .aهؼشفی فشم ُب ً .bضٍْ ایزبد فشم رذیذ .cیک فشم ّ چٌذ هذل Caching .11 .aهؼشفی caching Data Caching .b ّ .cاثغتگی کؼ Fragment caching .d .eگضیٌَ ُبی کؼ ّ .fاثغتگی دادٍ ُب 5
.gتٌْع دادٍ ُب .hدسخْاعت ًْع .iکؼ کشدى تْ دس تْ Page Caching .j .kهضتْای پْیب .11تٌسعو yii .aهؼشفی تْعؼَ ُب .bاعتفبدٍ اص تْعؼَ ُب .cایزبد تْعؼَ ُب .dعبخت تْعؼَ ُبی گًْبگْى .eاعتفبدٍ اص کتبثخبًَ ُبی rd-Party9 .12تست .aاًْاع سّػ تغت TDD .b .cتغت Bootstrap .13مذیریت آدرسيا .aایزبد ُ URLب .bاعتفبدٍ اص پبساهتشُبی ًبم گضاسی ؽذٍ .cهخفی کشدى index.php .14مثال ىا .15ضمیمو ىا
6
سخه مًلف : ٞط ضٚظ قبٞس دیكطفشٟبی ػسیسی زض حٛظ ٜفٙبٚضی اعالفبر ٔی ثبقیٕٓٞ .عٔبٖ ثب سٛؾق ٝؾرز افعاض ٞب ٚ سِٛیس لغقبر ثب لبثّیز ٞبی دیكطفش٘ ،ٝطْ افعاض ٞب ٘یع ث ٝنٛضر ٔٛاظی دیكطفز ٔی وٙٙس٘ .طْ افعاض ٞبیی وٝ ٞط وساْ فضبٞبی ػسیسی ضا زض اذشیبض وبضثطاٖ ذٛز لطاض ٔی زٙٞس ٚزض ایٗ ٔیبٖ ؾ ٟٓثط٘بٔٛ٘ ٝیؿبٖ ٚ عطاحبٖ ٚة ث ٝفٛٙاٖ سِٛیس وٙٙسٌبٖ ٘طْ افعاض ثؿیبض ثیكشط اؾز. فطیٓ ٚضن Yiiیه ثؿشط ٘طْ افعاضی ثب ؾطفز ٚثبظزٞی ثؿیبض ثبال اؾز و ٝثٚ ٝؾیّ ٝظثبٖ PHPسٛؾقٝ یبفش ٝاؾز ٚسٛا٘بیی سِٛیس ا٘ٛاؿ ٘طْ افعاضٞبی سحز ٚة ثب ٔمیبؼ ٞبی ٌ٘ٛبٌ ٖٛضا زاضا ٔی ثبقس. ٞسف اظ سبِیف ایٗ وشبة وٕه ث ٝدیكطفز ثط٘بٔٛ٘ ٝیؿبٖ فبضؾی ظثب٘ی اؾز و ٝث ٝسبظٌی وبض ثب ایٗ ٘طْ افعا ضا آغبظ ٕ٘ٛز ٜا٘س ٚلهس آقٙبیی ثب ایٗ ٔحیظ ٘طْ افعاضی ضا زاض٘س ٕٞچٙیٗ ؾقی قس ٜاؾز سب حس أىبٖ ػعئیبر ٔغبِت ٘یع ِحبػ قٛز سب وشبة ث ٝنٛضر یه ٔطػـ ثطای ثط٘بٔٛ٘ ٝیؿبٖ سجسیُ قٛز. ایٗ وشبة قبُٔ سطػٕٞ ٝبیی اؾز و ٝفیٙب اظ ضإٙٞبی فّٕی فطیٓ ٚضن زض ؾبیز ضؾٕی ٚوشبة ٞبی ٔٙشكط قس ٜزض ایٗ ٔٛضز ثطٌطزاٖ قس ٜاؾز ٕٞچٙیٗ ضإٙٞبی وسٞبی زاذُ فبیّٟبی فطیٓ ٚضن ٘یع ٔٛضز سٛػ ٝلطاض ٌطفش ٝاؾز ٚزض ٔٛاضز ا٘سوی سؼطثیبر ٔ ٚظبِٟبی فّٕی ِٔٛف آٚضز ٜقس ٜاؾز. سب ایٗ سبضید و٘ ٝؿر 1.1.8 ٝفطیٓ ٚضن اضائ ٝقس ٜؾقی قس ٜاؾز ٔغبِت ث ٝنٛضر یىذبضچٙٔ ٚ ٝؾٓ اضائٝ قٛز ٚوّی ٝأىب٘بر ٘ؿرٞ ٝبی لجّی دٛقف زاز ٜقٛز. ٔغٕئٙب ایٗ وشبة ٘یع زاضای اقىبالسی ٔی ثبقس و ٝثب ضإٙٞبیی ٚسٛػ ٝقٕب زض ٘ؿرٞ ٝبی ثقسی انالح ذٛاٞس قس .زض نٛضر زاقشٗ ٞطٌ ٝ٘ٛؾٛاَ٘ ،ؾط ٚیب دیكٟٙبز ِغفب اظ عطیك آزضؼ ایٕیُ
[email protected]آٖ ضا ثب ِٔٛف زض ٔیبٖ ثٍصاضیس. أیسٚاضْ ایٗ وشبة ثشٛا٘س ٌبٔی ٞطچٙس وٛچه زض ضا ٜاضسمبی فّٕی ثط٘بٔٛ٘ ٝیؿبٖ فبضؾی ظثبٖ ثطزاقشٝ ثبقس. فّی ثطػیبٖ قٟطیٛض 1390
7
Yii Frameworkچیست؟ یىی اظ ذٛاؾشٞ ٝبی ثط٘بٔٛ٘ ٝیؿبٖ ٚعطاحبٖ ؾبیز ٞبی ایٙشط٘شی ا٘شربثیهٙٔ Platformبؾت ثطای دیبزٜ ؾبظی ؾبیز ٞب ،ثط٘بٔٞ ٝبی سحز ٚة ٚدٛضسبَ ٞب ٔی ثبقس .قبیس ثطای وبضثطاٖ ٚیٙسٚظ ٚفٕٔٛب ثط٘بٔٝ ٘ٛیؿبٖ ٌ ASP.NETعیٞ ٝٙبی ظیبزی ثطای ا٘شربة ٔغطح ٘جبقس MS dotNet Framework ٚثٝ فٛٙاٖ Platformانّی ٔٛضز اؾشفبز ٜلطاض ٌیطز .أب ثطای ثط٘بٔٛ٘ ٝیؿبٖ ػبٔقٔ ٝشٗ ثبظ ث ٝذهٛل ثط٘بٔٝ ٘ٛیؿبٖ PHPا٘شربة یه ٙٔ Platformبؾت ٔمساضی دیچیس ٜاؾز .دیسا وطزٖ ٙٔ Platformبؾت ثطای ثط٘بٔٛ٘ ٝیؿب٘ی و ٝؾغح ٔشٛؾظ ثط٘بٔٛ٘ ٝیؿی PHPضا دكز ؾط ٌصاقش ٝا٘س ٚلهس ٚضٚز ث ٝفضبٞبی ػسیس ثب لبثّیز ٞبی ثیكشط ضا زاض٘س أطی ٔ ٟٓث ٝقٕبض ٔی ضٚز.قبیس ٘بْ ثؿیبضی اظ ایٗ ٞ Platformب ضا قٙیسٜ ثبقیس و ٝاِجش ٝسقساز آٟ٘ب وٓ ٘ ٓٞیؿشٙس ٔب٘ٙس ZooP - Zend - Prado - CakePHP:
فطیٓ ٚضن ( Yiiذٛا٘سٔ ٜی قٛز ای ٔب٘ٙس حطف Eوكیس ٜیب سّفؼ ٘ )Yeeیع ٕٞب٘ٙس ؾبیط ایٗ ثط٘بٔٞ ٝب یه Platformثطای اؾشفبز ٜثط٘بٔٛ٘ ٝیؿبٖ PHPاؾز و ٝزض ؾبَ 2008سٛؾظ سقسازی اظ ثط٘بٔٛ٘ ٝیؿبٖ ٔؼطة ٚحطف ٝای ؤ ٝسر ظٔبٖ ظیبزی ضا ثط ضٚی دطٚغٞ ٜبی سٛؾقٔ( PHP Frameworks ٝظُ دطٚغٜ ) Pradoنطف وطز ٜثٛز٘س فطض ٝقس .ایٗ دطٚغٞ ٜط چٙس فٕط عٛال٘ی ٘ساضز ِٚی ث ٝلسضی ٔٛطط ٚالـ قس ٜوٝ زض ٔسر وٛسبٞی سٛا٘ؿش ٝاؾز ٘ؾط ثؿیبضی اظ سٛؾق ٝزٙٞسٌبٖ ٚة ضا ث ٝذٛز ػّت ٕ٘بیس Yii .ثؿیبضی اظ لبثّیز ٞبی دطٚغٛٔ ٜفك Pradoضا ث ٝاضص ثطز ٜاؾز .دطٚغ Yii ٜسٛؾظ قطوز Yii Software LLCیب YiiSoftاضائ ٝقس ٜاؾزYii Framework .یه ٘طْ افعاض ضایٍبٖ ٔی ثبقس وٌٛ ٝاٞیٙبٔBSD ٝ Licenseضا ٘یع اذص ٕ٘ٛز ٜاؾز. بزخی اس يیضگی َای Yii Framework Yiiسٟٙب اظ ٘ PHPؿر ٚ 5 ٝثبالسط دكشیجب٘ی ٔی وٙس .زض ٔمبیؿ ٝثب فطیٓ ٚضوٟبیی ٔب٘ٙس CakePHPو ٝاظ ٘PHP 4یع دكشیجب٘ی ٔی وٙٙس ایٗ ٔؿئّ ٝیه وٕجٛز ث٘ ٝؾط ٔیطؾس ِٚی ٕٞیك ٝایٙغٛض ٘یؿز .فطیٓ 8
ٚضوٟبیی ٔب٘ٙس CakePHPثطای ایؼبز سغبثك ثب ٘ؿرٞ ٝبی ٘ 4بچبض٘س و ٝذیّی اظ لبثّیز ٞبی ٘ؿر 5 ٝضا ٘بزیس ٜثٍیط٘س یب ث ٌٝ٘ٛ ٝای آٟ٘ب ضا سغییط زٙٞس و ٝثبفض ایؼبز سغبثك ٌطزز ِٚی Yii Frameworkثب سٕطوع ثط ضٚی ٘ؿر PHP 5 ٝاظ ٕٝٞلبثّیز ٞبی آٖ اؾشفبزٔ ٜی وٙس ٚایٗ ٔؿئّ ٝزض ؾبَ 2011و ٝاوظط ٔیعثبٟ٘ب اظ PHP 5حٕبیز ٔی وٙٙس ٘ ٝسٟٙب یه وٕجٛز ٘یؿز ثّى ٝیه ٔعیز ث ٝقٕبض ٔی ضٚز.
زض ؾبذز فطیٓ ٚضن Yiiاظ اٍِٛی عطاحی MVCاؾشفبز ٜقس ٜاؾزٔ MVC.سِی اؾز و ٝزض ٟٔٙسؾی ٘طْ افعاض ٔقطفی ٔی قٛز ٚزض ایٗ ٔسَ اػعای ثط٘بٔ ٝث ٝؾ ٝلؿٕز انّی وٙشطَ وٙٙسٔ– ٜسَ– زیسٌب1ٜسمؿیٕٕیك٘ٛسٚػطیب٘سازٟٞبزضآ٘جطلطاضٔیكٛز Yii .سٕبٔی لٛافس MVCضا ضفبیز وطز ٜاؾز اٍِٛی وبضی MVCزض قىُ ظیط آٔس ٜاؾز:
یه ٔحیظ وبٔال قی ٌطا .زض Yiiقی ٌطایی ث ٝفٛٙاٖ یه انُ اِٚی ٝضفبیز قس ٜاؾز ٚزؾشطؾی ثٕٝٞ ٝ چیع حشی زؾشطؾی ث ٝػسا َٚثب٘ه اعالفبسی ٚضٚاثظ ٘ ... ٚیع زض لبِت قی ٌطایی سقطیف ٔی قٛز و ٝایٗ ٔؿئّ ٝزض ٔمبثُ فطیٓ ٚضوٟبیی ٔظُ CakePHPوٕٞ ٝچٙبٖ اظ زؾشطؾی ٞبی ضاثغ ٝای دكشیجب٘ی ٔی وٙٙس یه ٔعیز فٕس ٜاؾز.
9
اظ لبثّیز ثط٘بٔٛ٘ ٝیؿی genericحٕبیز ٔی وٙس generic.یه لبثّیز ثط٘بٔٛ٘ ٝیؿی اؾز وٞ ٝسف اظ آٖ دكشیجب٘ی اظ ا٘ٛاؿ زازٞ ٜبی ٚضٚزی ثس ٖٚلیس ٔحسٚزیز ٘ٛؿ اؾز ٚث ٝفٛٙاٖ یىی اظ ضٚقٟب ٚسىٙیه ٞبی ٘ٛیٗ ثط٘بٔٛ٘ ٝیؿی اؾشفبزٔ ٜی قٛز. ٕٞبٍٙٞی ثب JQuery .JQueryیه Platformثطاؾبؼ ظثبٖ JavaScriptاؾز و ٝلبثّیز ٞبی فٛق اِقبز ٜثهطی ضا زض ٔحیظ وبضی وبضثط ایؼبز ٔی وٙس Yii Framework .ثب ایٗ ٕٞ Platformبٍٙٞی ٚ اضسجبط ٔؿشمیٕی ضا ایؼبز ٔی وٙس ٚأىبٖ اؾشفبز ٜاظ لبثّیز ٞبی AJAXضا فطأ ٓٞی وٙس.
اظ ORMدكشیجب٘ی ٔی وٙس Object Relational Mapping.ضٚقی ثطای سغبثك ثب قی ٌطایی اؾز .اظ آ٘ؼبیی و ٝثب٘ه اعالفبسی MySQLیه ثب٘ه اعالفبسی ضاثغ ٝای اؾز ِصا زض ضٚـ ORMیه ثب٘ه اعالفبسی ٔؼبظی اظ ثب٘ه انّی MySQLؾبذشٔ ٝی قٛز ٚفّٕیبر ثط ضٚی آٖ ثب اؾشفبز ٜاظ ضٚـ قی ٌطا ا٘ؼبْ ٔی قٛز ٚؾذؽ ایٗ ثب٘ه اعالفبسی ٔؼبظی ثط ضٚی ثب٘ه انّی ٔ Updateی قٛز .ثطای ثط٘بٔٝ ٘ٛیؿبٖ .NETایٗ ٔٛضٛؿ آقٙب اؾز ٚزض ٔ ADO.NETف ْٟٛثب٘ه اعالفبسی ٔؼبظی زض لبِت Dataset اضائٔ ٝی قٛز. اؾشفبز ٜاظ حبِز Cachingدیكطفش Yii. ٝاظ یه حبِز Cachingثؿیبض دیكطفش ٝثطای وبض ثب ثب٘ه اعالفبسی اؾشفبزٔ ٜی وٙس و ٝیه ٔعیز فٕس ٜاؾز ٚثبفض ؾجه قسٖ فضبی وبضی ٚافعایف ثؿیبض ظیبز ثبظزٞی ٔیكٛز .ثٕٛ٘ ٝزاضی ؤ ٝقطف ثبظزی Yii Frameworkزض ٔمبیؿ ٝثب چٙس فطیٓ ٚضن ٔقطٚف اؾز سٛػ ٝوٙیس :
01
ٔكبٞسٔ ٜی قٛز ٔیعاٖ ثبظزٞی آظٔبیف قس ٜثطای Yiiثؿیبض ثیكشط اظ ضلجبی لسیٕی ذٛز اؾز. چٙس ٔٛضز اظ ٚیػٌی ٞبی زیٍط : دكشیجب٘ی اظ AJAX دكشیجب٘ی اظ ثب٘ه اعالفبسی چٙس ٌب٘MultipleDB ٝ دكشیجب٘ی اظ Templates دكشیجب٘ی اظ Modules دكشیجب٘ی اظAuthentication دكشیجب٘ی اظ Validationپیص ویاسَای قبل اس ضزيع کار ثطای قطٚؿ وبض ثب Yiiوبضثط ثبیس ثب ان َٛاِٚی ٝثط٘بٔٛ٘ ٝیؿی آقٙبیی زاقش ٝثبقسٕٞ .چٙیٗ ان َٛاِٚیٝ عطاحی ٚة ٚآقٙبیی ثب زؾشٛضار PHPضطٚضی اؾز .وبضثط ثبیس ثب ٔفبٞیٓ قی ٌطایی ٕٞ ٚچٙیٗ ثب٘ه ٞبی اعالفبسی آقٙب ثبقس .سقسازی اظ دیف ٘یبظ ٞب زض ظیط آٔس ٜاؾز: XHTML CSS JavaScript & JQuery PHP Object Oriented ProgrammingSQL Language & PhpMyAdmin -
چٍ بزوامٍ َایی را با Yiiمی تًان تًلیذ کزد فطیٓ ٚضن ٙٔ Yiiبؾت ثطای عطاحی ؾبیز ٞب ٚثط٘بٔٞ ٝبی سحز ٚة ثب سطافیه ثبال اؾز .ؾبیز ٞبی ٔطسجظ ثب سؼبضر اِىشط٘ٚیه ،دٛضسبَ ٞب ،فطٞ ْٚب ٚؾیؿشٓ ٞبی ٔسیطیز ٔحشٛا اظ ػّٕ ٝثط٘بٔٞ ٝبیی ٞؿشٙس 00
ؤ ٝی سٛاٖ سٛؾظ Yiiآٟ٘ب ضا دیبز ٜؾبظی ٕ٘ٛز.أٙیز ،ؾطفز ٚوبضایی اظ ػّٕٕٟٔ ٝشطیٗ ٔكرهٞ ٝبی ثط٘بٔٞ ٝبی سِٛیس قس ٜسٛؾظ ٞ Yiiؿشٙس Yii.یه فطْ ٚضن ٔٙبؾت ثطای دیبز ٜؾبظی ؾبیز ٞبی حطف ٝای ٚدیكطفش ٝثب ٔیعاٖ وبضایی ثبال اؾز ٚلبثّیز ٞبی ٌؿشطـ ظیبزی ضا زض اذشیبض وبضثطاٖ ذٛز لطاض ٔی زٞس.
وصب Yii Framework ٘هت فطیٓ ٚضن قبُٔ ٔطاحُ ظیط اؾز : اٌط لهس ٘هت فطیٓ ٚضن ثط ضٚی localhostضا زاضیٓ ثبیس ٙٔ host serverبؾت ضا ٘هت ٕ٘بییٓ .دیكٟٙبز ٔی قٛز و ٝاظ ٘طْ افعاض XAMP Serverاؾشفبزٕ٘ ٜبییس ٞط چٙس ٔی سٛاٖ اظ ثط٘بٔٞ ٝبی زیٍط ٕٞب٘ٙس ٘ Wamp Serverیع اؾشفبز ٜوطز٘ .ىش ٟٓٔ ٝایٗ اؾز وٞ ٝبؾز ٔٛضز اؾشفبز ٜاظ ٘ PHPؿر5.1 ٝیب ثبالسط دكشیجب٘ی ٕ٘بیس.آذطیٗ ٘ؿر ٝفطیٓ ٚضن ضا اظ لؿٕز downloadsؾبیز www.yiiframework.com زضیبفز ٕ٘بییس .ایٗ فبیُ زض لبِت tarیب ٔ zipی ثبقس .ایٗ فبیُ ضا اظ حبِز فكط ٜذبضع ٔی وٙیٓ ٚ .زض یه دٛق ٝثب فٛٙاٖ yiiلطاض ٔیسٞیٓ.دٛق yii ٝایؼبز قس ٜضا زض ٔؿیط localhostلطاض ٔی زٞیٓ .اٌط اظ XAMP Serverاؾشفبزٔ ٜی وٙیٓ ایٗ ٔؿیط چیعی ٔب٘ٙس C:\xampp\htdocsاؾز ٚاٌط اظ Wamp Serverاؾشفبزٔ ٜی وٙیٓ ٔ C:\wamp\wwwی ثبقس. زض ؾبیط ٞبؾز ٞب ثبیس دٛقٛٔ ٝضز ٘ؾط ضا دیسا وٙیٓ٘.ىش : ٝلطاض زازٖ دٛق ٝفطیٓ ٚضن زض ایٗ ٔؿیط اِعأی ٕ٘ی ثبقس ٚثقسا ٔی سٛاٖ ایٗ ٔؿیط ضا ثٞ ٝط ػبی زیٍط سغییط زاز.زض ایٗ ٔطحّ Localhost Server ٝضا ٔ Startی وٙیٓ ٚؾطٚیؽ ٞبی MySQL ٚ Apacheضا ضا ٜا٘ساظی ٔی وٙیٓ ٚؾذؽ زض ٔطٚضٌط ذٛز آزضؼ ظیط ضا ثبظ ٔی وٙیٓ : http://localhost/yii/requirements/index.php زض ایٗ نفح٘ ٝیبظٔٙسی ٞبی ٔٛضز ٘یبظ ٘كبٖ زاز ٜقس ٜاؾزٌ .عیٞ ٝٙبی Failedقس ٜثبیس ثطضؾی ٚ ؾطٚیؽ ٞبی ٔطسجظ ثب آٟ٘ب فقبَ ٌطز٘س سب اظ حبِز Failedذبضع ق٘ٛس .ز ٚؾطٚیؽ ٚ PDO extension PDO SQLite extensionثطای قطٚؿ ث ٝوبض ثب Yiiضطٚضی ٞؿشٙس ٚثبیس فقبَ ثبقٙس.
02
زض ایٗ ٔطحّ ٝثبیس ٔؿیط ٞبی ؾیؿشٓ ضا انالح ٕ٘بییٓ ثطای ایٗ وبض زض ٚیٙسٚظ زض نفحMyComputer ٝ وّیه ضاؾز وطزٌ ٚ ٜعی Properties ٝٙضا ا٘شربة ٔی وٙیٓ ٚؾذؽ زض لؿٕز Advanced Settings زض لؿٕز ٚ Advancedاضز ٔی قٛیٓ ٌ ٚعی Environment Variables ٝٙضا ا٘شربة ٔی وٙیٓ ٚزض لؿٕی ٌ System Variablesعی Path ٝٙضا ا٘شربة وطزٔ ٚ ٜؿیط لطاض ٌیطی فطیٓ ٚضن ٕٞ ٚچٙیٗ ٔؿیط لطاض دیطی فبیُ php.exeو ٝزض Localhost Serverلطاض زاضز ضا اضبفٔ ٝی وٙیٓ ٔب٘ٙس ظیط : C:\xampp\htdocs\yii\framework;C:\xampp\php حبَ ؾیؿشٓ ضا یه ثبض ضا ٜا٘ساظی ٔؼسز ٔیىٙیٓ. ساخت ايلیه پزيصٌ دؽ اظ ٘هت فطیٓ ٚضن ثطای ؾبذز اِٚیٗ دطٚغ ٜث ٝقىُ ظیط فٕی ٔی وٙیٓ .اثشسا زض ٚیٙسٚظ زض لؿٕز runفجبضر cmdضا سبیخ ٔی وٙیٓ ٚ ٚاضز ٔ Command Promptیكٛیٓ.ؾذؽ ثب زؾشٛض ٚ cdاضز ٔؿیط ٔ web rootی قٛیٓ ٔظال اٌط اظ XAMP Serverاؾشفبزٔ ٜی وٙیٓ : Cd C:\xampp\htdocs ؾذؽ اظ اثعاض yiicثطای ؾبذز دطٚغٛٔ ٜضز ٘ؾط اؾشفبزٔ ٜی وٙیٓ : yiic webapp demo ؾذؽ یه ؾٛاَ دطؾیسٔ ٜی قٛز و y ٝیب yesضا ٚاضز ٔی وٙیٓ Create a Web application demo? [Yes|No] yes 09
...... ایٗ وبض ثبفض ؾبذز یه دٛق ٝثب ٘بْ demoزض ٔؿیط ػبضی ٔ webrootی قٛز .ثطای ٔكبٞس ٜدطٚغٜ ؾبذش ٝقسٔ ٜؿیط ظیط ضا زض ٔطضٌط ذٛز ٚاضز ٔی وی: ٓٙ http://localhost/demo/index.php
دطٚغ ٜؾبذش ٝقس ٜزاضای 4نفح homepage, about page, contact page login page ٝاؾز .ثٝ ایٗ دطٚغ ٜؾبذش ٝقسٔ skeleton ٜی ٌٛیٙس و ٝقبُٔ ایٗ 4نفح ٝدیف فطو ٚاثشسایی اؾز ٚثقسا نفحبر ٔ ٚحشٛیبر آٖ سٛؾظ ٔب ٚیطایف ٔی قٛز. ٘ىشٔ :ٝؿیط دٛق yii framework ٝثبیس حشٕب زض pathلطاض زاز ٜقس ٜثبقس زض غیط ایٗ نٛضر ثط٘بٔٝ yiicاػطا ٘رٛاٞس قس ٚثطای اػطای yiicثبیس ٔؿیط فبیُ ٘ php.exeیع زض ٛٔ pathػٛز ثبقس. ابشار خط فزمانyiic دؽ اظ ٘هت Yii Frameworkثطای ایؼبز یه دطٚغ ٜػسیس ث ٝقىُ ظیط فُٕ ٔی وٙیٓ .ث ٝؾغط فطٔبٖ ضفش ٚ ٝزؾشٛض ظیط ضا ٚاضز ٔی وٙیٓ : Yiic webapp [path/] project-name ٔظبَ: Yiic webapp c:\xampp\htdocs\project1 ؾبذشبض وبُٔ زؾشٛض yiicث ٝقىُ ظیط اؾز: 04
]yiic [parameters... The following commands are available: - message - migrate - shell - webapp ؾٛییچ Message >yiic message yiic webapp defaultController 21
;echo Yii::app()->theme تغییر بَ همادیر // ;”Yii::app()->name = “My Project Name
ٞط Applicationسٛؾظ والؼ CWebApplication
ؾبذشٔ ٝی قٛز و ٝزض ٔؿیط
yii\framework\web\CWebApplication.phpلطاض زاضزٔ.ؿیط لطاضٌیطی yii.phpث ٝقىُ ظیط سقییٗ ٔی قٛز: ;'$yii=dirname(__FILE__).'/../yii/framework/yii.php
دؽ ٕٝ٘ٛ٘ applicationای ؾبذش ٝقس ٜاظ ضٚی والؼ yiiاؾز و ٝسٙؾیٕبر configزض آٖ افٕبَ قسٜ اؾز.دٛقٔ Protected ٝحُ لطاض ٌیطی فبیّٟب ٚدٛقٞ ٝبی انّی ثط٘بٔ ٝاؾز و ٝث ٝآٖ دٛقٝ ٘ Applicationیع ٔی ٌٛیٙس ٚثبیس اظ زؾشطؼ زیٍطاٖ ٔحبفؾز قٛز ِصا یه فبیُ ٔرفی ثب ٘بْ .htaccessایؼبز وطزٔ ٚ ٜحشٛای آٖ ضا ثطاثط deny from allلطاض ٔی زٞیٓ.آزضؼ زؾشطؾی ث ٝآٖ : dirname(__FILE__).'/protected
: Entry Script Entry Scriptث ٝفبیُ ٛٔ index.phpػٛز زض قبذ ٝانّی ٌفشٔ ٝی قٛز و ٝقی انّی ثط٘بٔ ٝیقٙی Applicationضا ایؼبز ٔی وٙس .ث ٝفبیُ index.phpانّی Entry Scriptیب اؾىطیذز ٚضٚزی ٌفشٔ ٝی 20
قىُ ظیطٝض دیف فطو ثٛ عٝای ایٗ فبیُ ثٛ ٔحش.زٛ ٔی قٜؾیٕبر زیٍطی ٘یع لطاض زازٙزض ایٗ فبیُ س.زٛق .اؾز // change the following paths if necessary $yii=dirname(__FILE__).'/../yii/framework/yii.php'; $config=dirname(__FILE__).'/protected/config/main.php'; // remove the following lines when in production mode defined('YII_DEBUG') or define('YII_DEBUG',true); // specify how many levels of call stack should be shown in each log message defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3); require_once($yii); Yii::createWebApplication($config)->run();
.زٛ ٔی قٝ ٌفشBootstrap ٖ آٝ ثٝس وٙ ضا ٔكرم ٔی وyii.php ٔؿیط لطاض ٌیطی: $yii .سٙ ضا ٔكرم ٔی وconfig file ٖٕبٞ یبApplication ُ ٔؿیط لطاض ٌیطی فبی: $config ٗ اظ ایdebug mode زض حبِزdefined('YII_DEBUG') or define('YII_DEBUG',true); ٝییٓ زیٍط ٘یبظی ثٌٛ ٔیProduction mode ٖ آٝ ثٝ ؾبیز وpublish ٍْبٙٞ ٚ زٛ ٔی قٜوس اؾشفبز .ایٗ وس ٘یؿز اٌط حبِزdefined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3); .زٛ قٜس ؾغح ذغب ثبیس زض یه دیبْ ٘كبٖ زازٙط چٞ ٝس وٙ فقبَ ثبقس ٔكرم ٔی وlogging .سٙا٘ی ٔی وٛ ضا فطاذyii.php ُ فبیrequire_once($yii); اظ والؼٕٝ٘ٛ٘ ض یهٛؾظ ایٗ زؾشٛس
Yii::createWebApplication($config)->run();
.زٛ ؾذؽ اػطا ٔی قٚ ٘سٛ زض آٖ افٕبَ ٔی قconfig ُز زض فبیٛػٛٔ بیٞسطl دبضاٚ زٛ ٔی قٝؾبذشYii
: Bootstrap بی وبضثطٟاؾشٛ زضذٝ وّیٝ اؾز وFramework ز زضٛػٛٔ yiic.php ُٕبٖ فبیٞ bootstrap اؾىطیذز وبضثطٝب اؾىطیذشی اؾز وٟٙ سBootstrap.سٙ اضؾبَ ٔی وٝعٛشطِط ٔطثٙ ثطای وٚ سٙضا زض زضیبفز ٔی و ٝ ثمیٚ زٛ اػطا ٔی قbootstrat اؾز وبضثطٛط زضذٞ ثب. ثبقسٝ آٖ زؾشطؾی ٔؿشمیٓ زاقشٝا٘س ثٛؾبیز ٔی س .سٙب ضا ز٘جبَ ٔی وٞوبض
22
: Config فبیُ Configفبیّی اؾز و ٝسٙؾیٕبر وّی دطٚغ ٜزض آٖ لطاض زاضزٔ.ؿیط فبیُ configضا زض فبیُ bootstrapث ٝقىُ ظیط سقییٗ ٔی وٙیٓ : ;'$config=dirname(__FILE__).'/protected/config/main.php
ٞط applicationؾبذش ٝقس ٜسٛؾظ bootstrapزض ٚالـ ٕ٘ ٝ٘ٛای اظ فبیُ ٛٔ yiiBase.phpػٛز زض frameworkاؾز و ٝسٙؾیٕبر configزض آٖ افٕبَ قس ٜاؾز: ;)(Yii::createWebApplication($config)->run
Configزض ٚالـ آضای ٝای اؾز ؤ ٝمبزیط ٚسٙؾیٕبر دطٚغ ٜزض آٖ لبثُ سقطیف اؾز.اٌط فبیُ config ذیّی دیچیس ٚ ٜعٛال٘ی ثبقس ٔی سٛاٖ آٖ ضا زض چٙس فبیُ ػسا سمؿیٓ وطز ٟ٘ ٚبیشب ٕٝٞضا ث ٝیه ٘مغٝ ٔكشطن دی٘ٛس زازٔ config .ی سٛا٘س زض فبیُ protected/config/main.phpشذیط ٜقس ٜثبقس ٚیب زض یه فبیُ زیٍط و ٝثطای أٙیز ثیكشط زض ٍٙٞبْ ٔ Productionی سٛاٖ آٖ ضا زض فبیُ زیٍطی لطاض زاز ٚ ٔؿیط Configضا زض index.phpانّی ثط٘بٔ ٝانالح ٕ٘ٛز. ٔؿیط دیف فطو config ;'protected/config/main.php
ٔظبِی اظ ٘ح ٜٛا٘ؼبْ سٙؾیٕبر زض config
(array 'name'=>'Yii Framework', 'defaultController'=>'site', )
ٔحشٛای وّی configسٟٙب یه آضای ٝاؾز ث ٝقىُ :