![](https://habrastorage.org/getpro/habr/post_images/0d6/2da/dc9/0d62dadc9869fcd9bf49bdad21e7ccd2.png)
çµã¿èŸŒã¿ã®ã€ã³ã¿ãŒãã§ã€ã¹ãã¶ã€ããŒã䜿çšããŠIDEãèšè¿°ããæ¹æ³ãæå°éã®åŽåã§è¿ éã«è¡ãæ¹æ³ ãã®ãããªè³ªåã¯ãExtJSãšPHPã®æã䜿çšãããããžã§ã¯ãã§äžåºŠçºçããŸããã åå£å Žã®çšèªãæé·ããã¿ã¹ã¯ã®ã©ã€ã³ã ã¿ã¹ã¯ã®ãªã¹ãã«ã¯ãèšå€§ãªæ°ã®å ¥åãã©ãŒã ãããŒãã«ãã¬ããŒããæ¯æ¥è£å ãããŸãããããã¯ãã¹ãŠããŠãŒã¶ãŒã«å¯ŸããŠåŠçããã£ã«ã¿ãªã³ã°ã衚瀺ããå¿ èŠããããŸãã
ãã®ãããžã§ã¯ãã§ã¯ORMã䜿çšããŸãããããã¯ãé¡äŒŒã®ã€ã³ã¿ãŒãã§ã€ã¹ãèªåçã«çæããå¯èœæ§ãæ確ã«ç€ºåããŸããããå€ãã®é¡äŒŒç¹ããããããåãã©ãŒã ãšã¬ããŒãã¯äžæã§ãããè¿ éã§ç°¡åãªæ§æãå¿ èŠã§ããã
ç°¡åãªæ€çŽ¢ã§ãExt DesignerïŒSencha ArchitectïŒ-èå³æ·±ã䟿å©ãªããŒã«ãæããã«ãªããŸããïŒExt MVCã¯ãŸã ååšããŠããŸããã§ããïŒã Ext Designerã¯ã¿ã¹ã¯ã解決ããã®ã«åœ¹ç«ã¡ãŸããã§ãããããã¹ãŠã詳现ã«èª¬æããŸããã
åæã«ãPHP-Extãããžã§ã¯ãã«æ³šç®ããŸãããPHPã§èšè¿°ãããExtJSã®èå³æ·±ãã©ãããŒã§ãã ãã®ç¡éã®ã€ã³ã¿ãŒãã§ã€ã¹ã¹ããªãŒã ãçæããããã«äœ¿çšã§ããŸããããã£ãšæ¬²ããã®ã¯ãExt DesignerãšExtJSäžã®PHPã©ãããŒã®æ··åç©ã§ããããã«ãããããŒã¿ããŒã¹ããèŠãããããŒãã«ã«åºã¥ããŠãã©ãŒã ãæ§ç¯ããããšãã§ããŸãã ããã«è¯ãã®ã¯ãORMãªããžã§ã¯ãã®æ§é ã«åºã¥ããŠããŸãããã£ãŒã«ãã®ååãã¿ã€ããããªããŒã¿ãŒããã¹ãŠããããã§ãã
ãã®ãããªããŒã«ã®æ€çŽ¢ã¯æåããŸããã§ããã
![](https://habrastorage.org/getpro/habr/post_images/141/3fa/049/1413fa04927dc67853bc62df82086e19.png)
IDEã®æ§æïŒ
ã³ã³ããŒãã³ãã³ãŒããçæããæ¹æ³ããç¥ã£ãŠãããExtJSã®1ã€ã®ã©ãããŒã
2 ExtJSã©ãããŒèŠçŽ ãè¿œå ããã·ã³ãã«ãªAPIãå«ããããžã§ã¯ããã¡ã€ã«ã
èŠçŽ ãé 眮ããçµæããã£ãã·ã¥ãã3ã€ã®ã³ãŒãã³ã¬ã¯ã¿ãŒã
ãããžã§ã¯ãèšå®ãç°¡çŽ åãã4ã€ã®ã€ã³ã¿ãŒãã§ã€ã¹ãã¶ã€ããŒãã³ãŒããšãã£ã¿ãŒ;
æ¥åžžçãªã¿ã¹ã¯ãèªååããããã®æ¢è£œã®ã³ã³ããŒãã³ã圢åŒã®5ã€ã®ãã°ããºãïŒ
5.1åå¿è åãã®ExtJã®ç¶æ¿ã®éèªæãªæ©èœã
5.2ãšãã£ã¿ãŒã®åå®çŸ©ã
5.3 2åã®ã¯ãªãã¯ã§Ajaxãªã¯ãšã¹ãã®URLãçæããŸãã
5.4ããŒã¿ããŒã¹ããã®æ§é ã®ã€ã³ããŒãããã©ãŒã ã®èªåäœæã
5.5å€éšãã¡ã€ã«ãšãããžã§ã¯ãã®æ¥ç¶ã
5.6ã€ã³ã¿ãŒãã§ã€ã¹ã®ããŒã«ã©ã€ãºã
5.7ã€ãã³ãããã³ã¡ãœããã®ãšãã£ã¿ãŒã
6ããã³ããšã³ãã®ãªã¯ãšã¹ããããŒã APIã«å€æããããã¯ãšã³ããã¶ã€ããŒã¯ããããžã§ã¯ãã§äœæ¥ããŸãã
8ãããžã§ã¯ããžã§ãã¬ãŒã¿ãŒã
1ã©ãã
ãã®ã¿ã¹ã¯ã§ã¯ãã¢ã€ãã¢ã®ããŒãºã«åãããŠExtJSã®ç¬èªã®ã©ãããŒãäœæããå¿ èŠããããŸãã ã©ã€ãã©ãªã®ããªã¥ãŒã ã¯ååã«å€§ãããããã©ã€ãã©ãªã³ã³ããŒãã³ãã®ããããã£ã»ãããåäœã®èª¬æããåé¢ããããšã§æéãç¯çŽããŸãã ãã¹ãŠã®ExtJsãªããžã§ã¯ããPHPã³ãŒãã§ãã©ãŒãªã³ã°ãããããã§ã¯ãããŸããã ã°ãªãããã¹ãã¢ããŠã£ã³ããŠãªã©ãéãããæ°ã®ãªããžã§ã¯ãã®ã¯ã©ã¹ã«ã€ããŠèª¬æããŸãã ä»ã®ãã¹ãŠã®ãªããžã§ã¯ãã¯ãã³ãŒãå ã«ç©ççã«ååšããããšã¯ã§ããŸããããéå±€ã§èšè¿°ãããäžé£ã®ããããã£ã«åºã¥ããŠäœæãããŸãã
ãããã£ãŠãæ°æ¥ã§ExtJSã³ã³ããŒãã³ãã®ããããã£ã®éå±€ãåäœæãããåæã«ããŒãžã§ã³3ïŒæ°ååã®ã¯ã©ã¹ïŒãäœæãããŸããã ãã®åŸãå¿ èŠã«å¿ããŠãå¿ èŠãªã³ã³ããŒãã³ãã®åäœãèšè¿°ããããšãã§ããŸãããäž»èŠãªã³ã³ããŒãã³ãã¯json-configã¬ãã«ã§çæãããŸããã
次ã®åœ¢åŒã®éå±€ãååŸããŸãïŒã°ã©ãã®äžéšãZend_Framework 1ã®åæ°ïŒïŒ
![](https://habrastorage.org/getpro/habr/post_images/87d/826/933/87d82693356e6991826f2d746267b034.png)
Ext_Objectãšãã®åå«ã¯ãã³ã³ããŒãã³ãã®åäœãæ åœããŸãã
Ext_Configã¯ãããããã£ã®ä¿åãæ€èšŒãã·ãªã¢ã«åãè¡ããŸãã
Ext_Propertyãšãã®åå«ã¯ãç¹å®ã®ExtJSã³ã³ããŒãã³ãïŒãããªãã¯ããããã£ãæã€ã¯ã©ã¹ãExtJsã©ã€ãã©ãªã®éå±€ãããçšåºŠç¹°ãè¿ãïŒã®ç¹æ§ãèšè¿°ãã責任ããããŸãã
Ext_Virtualã¯ã¯ã©ã¹ã§ãã ã³ã³ããŒãã³ãã®åäœãèšè¿°ããExt_Objectã®çŽæ¥ã®åå«ããªãå Žåããã®ã¯ã©ã¹ã®ãªããžã§ã¯ãã¯ãã¡ã¯ããªã«ãã£ãŠäœæãããŸãã Ext_Property_xxxããããã£ã®èª¬æã«åºã¥ããŠäœæãããŸãã ã©ã€ãã©ãªã³ã³ããŒãã³ãã«å¯ŸããŠè¡šãååã䜿çšããŠããšãã¥ã¬ãŒã·ã§ã³ã®ããã«ã¯ã©ã¹ã®ååãåãå ¥ãããšããç¹ã§ç°ãªããŸãã
Ext_Objectã¯__toStringã¡ãœãããå®è£ ããã³ã³ããŒãã³ãã®ExtJSã³ãŒããè¿ããŸãã å¿ èŠã«å¿ããŠããã®ã¡ãœããã¯çžç¶äººã§ãªãŒããŒã©ã€ãã§ããŸãã ãªããžã§ã¯ããäºãã«å ¥ãåã«ãªã£ãŠããå Žåãã«ãŒããªããžã§ã¯ãã®æååã«ã«ãŒãããç¬éã«ããã§ãŒã³å šäœãç°¡åã«è§£åãããŸãïŒJsã³ãŒãã®æååã«ãªããŸãïŒã
å®è·µã瀺ããŠããããã«ããã®ãœãªã¥ãŒã·ã§ã³ã¯é çãåé¿ããŸããã
2ãããžã§ã¯ããã¡ã€ã«
ExtJSã®ã€ã³ã¿ãŒãã§ã€ã¹ã¯ããã§ãŒã³ã«é 眮ãããã¬ã€ã¢ãŠãã«ããã³ã³ããŒãã³ãã§æ§æãããŸãã
ãããžã§ã¯ãã³ã³ããŒãã³ãã®æ¥ç¶èšå®ãäœããã®æ¹æ³ã§ä¿åããå¿ èŠããããŸãã XMLãŸãã¯ä»ã®åæ§ã®åœ¢åŒãæ§æãã¡ã€ã«ãšããŠäœ¿çšã§ããŸãã
ãã®å Žåããããžã§ã¯ããããŒããããã³ã«ãæ§æãåæãããªããžã§ã¯ããåæåããå¿ èŠããããŸããããã«ã¯æéããããå ŽåããããŸãã ã·ã³ãã«ãé«éãç°¡åãªãã©ãŒããããå¿ èŠã§ãã
ãããžã§ã¯ãèªäœãè¡šãDesigner_Projectã¯ã©ã¹ã宣èšããèŠçŽ ãè¿œå ããããã®åçŽãªAPIãæã¡ãèŠçŽ èªäœãããªãŒæ§é ã«æ ŒçŽãããšããŸãïŒå éšã«ã¯ããªãŒæ§é ã§åäœãããªããžã§ã¯ãããããŸãïŒã
åœæã Treeã¯ã©ã¹ã¯ãã§ã«èšè¿°ãããŠããŸãããããã¯ãããªãŒæ§é ã§éåžžã«è¿ éã«æ©èœããæ倧25,000ã30,000ã®ãã¹ããããèŠçŽ ã®éå±€ã1ç§æªæºã§ç°¡åã«ç®¡çããŸããã
ãã®ãããªãããžã§ã¯ãã®ãªããžã§ã¯ãã¯ãã·ãªã¢ã«åããŠãã£ã¹ã¯ã«ä¿åã§ããŸãã ããã«ãã·ãªã¢ã«åãããæååãããå€æŽããã£ãå Žåã«ã®ã¿ããã·ã¥ãååŸããŠã€ã³ã¿ãŒãã§ã€ã¹ã³ãŒããåæ§ç¯ã§ããŸãã ã€ã³ã¿ãŒãã§ã€ã¹ãååæåãããšãæ€èšŒã®ããã«ãããžã§ã¯ããããŒãããã«ãã¡ã€ã«ãã£ãã·ã¥ã䜿çšã§ããŸãã
åœæã®Ext Designerã®äž»ãªåé¡ã¯ãã³ãŒããå€æŽãããã³ã«ãã¢ããªã±ãŒã·ã§ã³ãåæ§ç¯ããã¹ã¯ãªãããå ¬éããå¿ èŠãããããšã§ããã
æ§é Designer_ProjectïŒãããžã§ã¯ããã¡ã€ã«ïŒïŒ
-ã³ã³ããã®ã·ã¹ãã èšè¿°ïŒç§»åå¯èœãªã¯ã©ã¹ããã¹ããããèŠçŽ ãªã©ãå«ãããšãã§ããïŒã
-çŸåšã®ãããžã§ã¯ãã®èšå®ïŒååãåå空éãæ¥ç¶ããããã¡ã€ã«ãªã©ïŒ;
-APIïŒãããžã§ã¯ããæäœããããã®äžé£ã®ã¡ãœããïŒ;
-ããªãŒïŒèŠçŽ ã®ããªãŒããããžã§ã¯ãæ§é ïŒã
ã³ã³ããŒãã³ãã¯ã©ã¹ãæ¡åŒµãããããããã£ã®ãªã¹ããå¢å ããå¯èœæ§ãããããšã¯æ³šç®ã«å€ããŸãã ã»ãšãã©ãã¹ãŠã®å Žåãããã¯å€ã圢åŒãšã®äºææ§ã®åé¡ãåŒãèµ·ãããŸããã
ãã®ããããããžã§ã¯ããã¡ã€ã«ã衚瀺ãããŸããã ãã®éçšã§ãDesigner_Storageã¢ããã¿ãŒãªã©ãããã€ãã®è£å©ã¯ã©ã¹ãäœæãããŸããïŒãããžã§ã¯ãããã¡ã€ã«ã«ä¿åãããšããèããçªç¶å€ãããŸããïŒã ããã€ãã®ããã©ãŒãã³ã¹ãã¹ããå®æœãããçµæã¯æ¥œèŠ³çã§ãã¢ã€ãã¢ã¯ããŸãæ©èœããŸããã ãããžã§ã¯ãããªãŒã¯èŠçŽ ã®å ¥ãåã®æ§é ã®ã¿ãç¥ã£ãŠãããããªããžã§ã¯ãèªäœã¯å®éã«ã¯ãäºãã«ååšããªãããšã«æ³šæããããšãéèŠã§ãã ãã¶ã€ããŒ/ Project.php
3ã³ãŒãã³ã¬ã¯ã¿ãŒ
Designer_Projectã¯ã©ã¹ã¯åçŽãªAPIãåããã³ã³ããã§ããããã®å 容ãã©ãåŠçããããŸã£ããããããªããããç®çã®ã·ãŒã±ã³ã¹ã§èŠçŽ ã®ã³ãŒããæ£ããé 眮ã§ããè£å©ã¡ã«ããºã ãå¿ èŠã§ã-ããã¯Designer_Project_Codeã¯ã©ã¹ã§ãã ãããããããŸããŸãªæ¡ä»¶ãšãã©ã³ãã®æ°ã®ç¹ã§æãè€éãªã³ã³ããŒãã³ãã§ãã å ¥åãšããŠãããžã§ã¯ããªããžã§ã¯ããåãåããšãã€ã³ã¿ãŒãã§ã€ã¹ã®JSã³ãŒããè¿ãå¿ èŠããããŸãã ãããžã§ã¯ãããªãŒãååž°çã«ééããŠãã³ã³ããŒãã³ãã³ãŒããåãåããç®çã®é åºã§èŠçŽ ãé 眮ããŸãã ExtJSã®ã©ãããŒãã³ã³ããŒãã³ãã³ãŒããçŽæ¥çºè¡ããã³ã¬ã¯ã¿ãŒèªèº«ããã®ã³ãŒããæ£ããé åºã§é 眮ããããšã«æ³šæããããšãéèŠã§ãã æåã«å®£èšããã³ã³ããŒãã³ãã決å®ããã³ãŒããååŸããŠãäŸåã³ã³ããŒãã³ãã«ãªã³ã¯ãæ¿å ¥ããå¿ èŠããããŸãã
ã³ãŒãã¯éåžžã«è€éã§ãããã«ãããäœåºŠããªãã¡ã¯ã¿ãªã³ã°ãããæ°æ©èœã®ç»å Žã«ããããã«è€éã«ãªããŸããã
![](https://habrastorage.org/getpro/habr/post_images/92c/bce/93b/92cbce93bbe9434c8202a1170d09ac4b.jpg)
æéãçµã€ã«ã€ããŠã圌ã¯å¯å®¹ãªå€èŠ³ãšæ§é ãç²åŸããŸããã ãã¶ã€ããŒ/ãããžã§ã¯ã/ Code.php
ã³ã¢ExtJSã³ã³ããŒãã³ãã®æ¡åŒµã§ããJSãªããžã§ã¯ãã®å Žåãå ¥ãåã«ãªã£ãèŠçŽ ã®ã¬ã€ã¢ãŠããç°¡çŽ åããããã«ããªãã¯ã䜿çšãããŸããã childObjectsããããã£ãäœæãããŸãããããã¯ããã¹ãããããã¹ãŠã®èŠçŽ ã®ãªã¹ãã§ãããããã¢ã€ãã å ã®èŠçŽ ãžã®ã¢ã¯ã»ã¹ãšãªã³ã¯ã¯éåžžã«ç°¡åã§ãã
ãããžã§ã¯ãæ§é ã®ååž°çèµ°æ»ã«ãããDesigner_Project_Codeã®åäœåçãé¢é£ã³ã³ããŒãã³ãã®æ€çŽ¢ãããã³çžäºã«é¢é£ããæéèŠçŽ ã®ã³ãŒãã®æ£ããäœçœ®ã
ããŒã«å®äºã PHP-EXTã©ãããŒã®åçŽåãããé¡äŒŒç©ãäœæãããŠããããããžã§ã¯ãã«çµã¿èŸŒãããšãã§ããã¯ããã«é«éã«åäœããŸãã æ©èœã¯éãããŠããŸããã誰ããããéçºããããšãæ°ã«ããŸããã
4ãã¶ã€ããŒ
æãèå³æ·±ãã®ã¯ãã€ã³ã¿ãŒãã§ã€ã¹ãã¶ã€ããŒãäœæãããšãã§ãã æŠå¿µçã«ã¯ã次ã®ããã«ãªããŸãã
-ãããžã§ã¯ãã«é 眮ã§ããã³ã³ããŒãã³ãïŒãã¿ã³ããã©ãŒã ããŠã£ã³ããŠãããã«ïŒã®ãªã¹ããé 眮ãããããŒã«ããŒã®ããããã«ã
-ãããžã§ã¯ãã®ã¬ã³ããªã³ã°ã®çµæã衚瀺ããã¡ã€ã³ãã©ãŒã ã
-ã³ã³ããŒãã³ãéå±€ïŒTreePanelã䜿çšïŒ;
-ããããã£ãšãã£ã¿ãŒïŒããããã£ã°ãªããïŒã
çŸæç¹ã§ã¯ããã¶ã€ããŒã®å€èŠ³ã¯æ¬¡ã®ãšããã§ãïŒæåã®ãã®ãšã¯å€§ããç°ãªããŸãïŒã
1.ãããžã§ã¯ãèšå®ããã«ïŒããŒããä¿åããã¶ã€ããŒ/ã³ãŒããšãã£ã¿ãŒã¢ãŒãã®åãæ¿ããªã©ïŒ;
2.ãããžã§ã¯ãã«è¿œå ã§ããã³ã³ããŒãã³ãã®ãªã¹ããå«ãããŒã«ããŒã
3.ãããžã§ã¯ãæ§é ã衚瀺ããããã«ã¯ãèŠçŽ ã®ãã©ãã°ã¢ã³ããããã移åããµããŒãããèŠçŽ ãéžæãããšãåã ã®ããããã£èšå®ããã«ãããŒããããŸãã
4.ã³ã³ããŒãã³ãã®ããããã£ãèšå®ããããã®ããã«ïŒã€ãã³ããšã¡ãœãããç·šéããããã®è¿œå ã®ããã«ãå«ãŸããŠããŸãïŒã
5.äžå€®ã®ããã«ïŒãã®ã¹ã¯ãªãŒã³ã·ã§ããã§ã¯ããããžã§ã¯ãã®ã¬ã³ããªã³ã°ã®çµæã衚瀺ããŸã-ããŒã«ã©ã€ãºãšãã£ã¿ãŒïŒã ãããžã§ã¯ããããŒãããããšããµãŒããŒã¯ãã®ãªããžã§ã¯ãã®ã³ããŒãã»ãã·ã§ã³ã«ä¿åãããã¹ãŠã®æäœãå®è¡ããŸãã ãããã£ãŠãã€ã³ã¿ãŒãã§ãŒã¹ãèœã¡ãå ŽåããŠã£ã³ããŠããªããŒãã§ããå€æŽã¯å€±ãããŸããã [ä¿å]ãã¿ã³ãã¯ãªãã¯ãããšããããžã§ã¯ãããã£ã¹ã¯ã«ãã©ãã·ã¥ãããŸãã
å€æŽãè¡ã£ãåŸãã€ã³ã¿ãŒãã§ã€ã¹ã¯ãµãŒããŒã«èŠæ±ãéä¿¡ããç®çã®ã³ã³ãããŒã©ãŒãèŠæ±ãåãå ¥ããDesigner_Projectã«å€æŽãå ããŸãã å€æŽãæ£åžžã«é©çšããåŸããã¶ã€ããŒã¯JSã®åæ§ç¯ãèŠæ±ããŸãã
ãããžã§ã¯ãå ã®èŠçŽ ã®é 眮ãæ åœãããã¶ã€ããŒã®ã¡ã€ã³ããã«ã¯ããã©ãã°ã¢ã³ãããããããµããŒãããããªãŒã§ãã
![](https://habrastorage.org/getpro/habr/post_images/158/c13/a3f/158c13a3f91e7b89f72ccb5c18a2b5a9.png)
ããªãŒã¯ãµãŒããŒã«èŠçŽ ã®ãªã¹ããèŠæ±ãããµãŒããŒã¯APIã䜿çšããŠãããžã§ã¯ãããæ§é ãæœåºããŸãã èŠçŽ ããã©ãã°ããŠããéãã©ã®ã³ã³ããŒãã³ãã移åããããšããæ瀺ãšãšãã«ãªã¯ãšã¹ãããµãŒããŒã«éä¿¡ãããŸãã Designer_Project APIã«ã¯ãããªãŒå ã®ã¢ã€ãã ã移åããããã®ã¡ãœãããå«ãŸããŠããŸãã ããªãŒããŒããã¯ãªãã¯ïŒç®çã®ãªããžã§ã¯ããéžæïŒãããšãitemSelectedã€ãã³ããããªã¬ãŒããããã®ã³ã³ããŒãã³ãã®ããããã£ããã«ã衚瀺ãããŸãã
ãšãã£ã¿ãŒã³ã³ããŒãã³ãã®çžäºäœçšã¯ã€ãã³ãã¬ãã«ã§çºçããåã ã®ããŒããã³ã³ããŒãã³ãã¯ãå€éšã«ãããã®ãææ¡ããŠããªãããšããããããŸãã åèŠçŽ ã«ã¯ã芪ã³ã³ããŒãã³ããéåžžãµãã¹ã¯ã©ã€ãããå®çŸ©æžã¿ã®çææžã¿ã€ãã³ãã»ããããããŸãã
ããããã£ã°ãªããã®æ¡åŒµã³ã³ããŒãã³ãã¯ããããã£ãšãã£ã¿ãŒãšããŠäœ¿çšããããµãŒããŒãšã®éä¿¡æ¹æ³ã«ãã£ãŠè£å®ãããŸããïŒãã£ãŒã«ãã®ãªã¹ããèŠæ±ããããããã£ã®å€æŽãéä¿¡ããã€ãã³ããããªã¬ãŒããŸãïŒã
ç§ãã¡ã®å Žåããã®ã³ã³ããŒãã³ãã¯designer.properties.PanelãšåŒã°ããŠããŸãã
![](https://habrastorage.org/getpro/habr/post_images/8b0/ead/9b8/8b0ead9b8545b27d1f5d70e9ba2d0d9d.png)
1ã€ã®ããããã£ããã«ãäžå¯æ¬ ã§ã;å Žåã«ãã£ãŠã¯ããšãã£ã¿ãŒãšãŠã£ã³ããŠã§ããããããã£ãè¿œå ã§æ§æããæ©èœãå¿ èŠã§ãã ãã®ã¿ã€ãã®ãªããžã§ã¯ãã®èšå®ãªã¹ããå±éããå¿ èŠãããå Žåã¯ã ãã¶ã€ããŒãå²ãåœãŠããã designer.properties.Panelããç¶æ¿ãããŸãã
ãã¶ã€ããŒã®åææ©èœã§ã¯ãã¹ãŠã®åé¡ã解決ã§ããªãã£ãããããactionJsããã¡ã€ã«ããããžã§ã¯ãã«æ·»ä»ãããŸããïŒJavaScriptã³ãŒããå«ããã¡ã€ã«ã¯ãæšæºããŒã«ã§ã¯å®è¡ã§ããªããã®ã«äœ¿çšãããJSãããžã§ã¯ãã®åŸã«æ¥ç¶ãããŸãïŒã
Codemirror.net㯠ãã³ãŒããšãã£ã¿ãŒãšããŠäœ¿çšãããŸãã
ãã¶ã€ããŒã®æåã®ããŒãžã§ã³ã§ã¯ãã€ã³ã¿ãŒãã§ã€ã¹ãç°¡åãã€è¿ éã«æ§ç¯ã§ããŸããããä»ã®ãã¹ãŠã¯éçºè ã®è² æ ã«ãªããŸããã ãã以éã®ããŒãžã§ã³ã§ã¯ããã¶ã€ããŒã«ã€ãã³ãã衚瀺ããããªããžã§ã¯ããå±éããããã¡ãœãããè¿œå ãããã§ããŸãã
çµæã衚瀺ããæ¹æ³ã¯ïŒ éããŠããããŒãžã®DOMã§ãããžã§ã¯ããçŽæ¥ã¬ã³ããªã³ã°ã§ããŸããéåžžã«é«éã§ãããªãŒãä»ããŠèŠçŽ ãã¹ããŒããåŸãåæ§ç¯ã®é ãã¯ã»ãšãã©èŠããŸããã ãã®ãœãªã¥ãŒã·ã§ã³ã«ã¯é倧ãªåé¡ã1ã€ãããŸããéçºäžã®ãããžã§ã¯ãã§åé¡ãçºçããå ŽåïŒããããã£ãæ£ããèšå®ãããŠããªããªã©ïŒãJSãšã©ãŒã«ãããã¶ã€ããŒå šäœãã¯ã©ãã·ã¥ããŸãã éçºããã€ã³ã¿ãŒãã§ãŒã¹ãiframeã«è»¢éããæ¹ãè¯ãã§ãããå¿çã¯é ããªããŸããããããžã§ã¯ãã³ãŒãã®åŽ©å£ã¯ã°ããŒãã«ãªåŽ©å£ã«ã¯ã€ãªãããŸããã iframeèªäœãäžå€®ããã«ã«é 眮ããå¿ èŠã«å¿ããŠã³ã³ãã³ãã®æŽæ°ããªã¯ãšã¹ãã§ããŸãã
ãã¹ãŠã®ã倧人ãã®ãã¶ã€ããŒã®ããã«ãèŠçŽ ããã©ãŒã ã«æããŠãéçºäžã®ãããžã§ã¯ãå ã§çŽæ¥ç§»å/移åã§ãããšäŸ¿å©ã§ãããåçŽãªçç±ã§ãã®è³ªåã¯è§£æ±ºã§ããŸããã ç§ã¯ãã°ãããã®ãã³ãã£ãŒãæŸæ£ããªããã°ãªããªãã£ããç· ãåããå°œããŠããŸããã
ãã®åŸããã¶ã€ããŒã®ã¡ã€ã³ã€ã³ã¿ãŒãã§ã€ã¹ãšãããžã§ã¯ãèªäœã®çžäºäœçšã®ã¡ã«ããºã ãç»å ŽããŸããã 移åãããŒãã«ã®åã®æ¡å€§ããŠã£ã³ããŠã®ãµã€ãºå€æŽãã§ããŸããããã¯ãã¹ãŠä¿åãããŸãã æäœã®åçã¯éåžžã«åçŽã§ããã€ãã³ããã³ãã©ãŒã¯ãéçºã¢ãŒãã§éçºäžã®ã€ã³ã¿ãŒãã§ã€ã¹ã«è¿œå ããããã¶ã€ããŒã®ããŒã ã圢æãããã¶ã€ããŒã®ã³ã³ãããŒã©ãŒãšã®å¯Ÿè©±ãæ¯æŽããŸãããã¶ã€ããŒã®å€éšã€ã³ã¿ãŒãã§ã€ã¹ã¯ã³ãã³ããäºæãã衚瀺ããããšãã«åå¿ããŸã ããšãã°ãããŒãã«ã®åã移åãããšããªã¯ãšã¹ãããµãŒããŒãµã€ãAPIã«éä¿¡ãããã¡ã€ã³ã®ãã¶ã€ããŒã€ã³ã¿ãŒãã§ã€ã¹ã«éç¥ãããŸãã
æ¢è£œã®ã³ã³ããŒãã³ãã®åœ¢ã®5åã®ãã³ãæ¥åžžçãªã¿ã¹ã¯ã®èªåå
5.1åå¿è åãã®ExtJã®ç¶æ¿ã®éèªæãªæ©èœã
ã³ã³ããŒãã³ãã®ãã¡ã€ãã©ã€ãºã®ãããã¯ã«è§Šããåã«ãåå¿è ã«ã¯æããã§ã¯ãªãç¶æ¿æ©èœã«æ³šç®ããããšæããŸãã
Ext.define('mypanel',{ extend:'Ext.Panel', someProperty:{ a:1,b:2,c:3 }, someProperty2:[1,2,3] }); Ext.define('mypanel2',{ extend:'mypanel' }); var a = Ext.create('mypanel'); var b = Ext.create('mypanel2'); b.someProperty.a = 100; b.someProperty2.push(100); console.log(a.someProperty); console.log(b.someProperty); console.log(a.someProperty2); console.log(b.someProperty2);
ãªããžã§ã¯ã{a = 100ãb = 2ãc = 3}
ãªããžã§ã¯ã{a = 100ãb = 2ãc = 3}
[1ã2ã3ã100]
[1ã2ã3ã100]
ãããã®æ©èœã¯ã次ã®ããã«èŠããŠããããšãéèŠã§ãã ããã¯ããªãã®å€ãã®ç¥çµãæããŸãã ãããå¯äžã®èœãšãç©Žã§ã¯ãããŸããã泚æããŠãã ããã
5.2ãšãã£ã¿ãŒ
åºæ¬çãªããããã£ã®ãšãã£ã¿ãŒãåå®çŸ©ããŸããããšãã°ãããã¹ããã£ãŒã«ãã®ã¹ãã¢ãšãã£ã¿ãŒãããããžã§ã¯ãã§äœæããããã¹ãŠã®ã¹ãã¬ãŒãžã®ããããããŠã³ãªã¹ãïŒãµãŒããŒããèŠæ±ãããDesigner_Project APIãæå®ãããŸãïŒãããã³ä»ã®åæ§ã®ããããã£ïŒã¬ã€ã¢ãŠããäœçœ®åãããªã©ïŒã«çœ®ãæããŸãã
![](https://habrastorage.org/getpro/habr/post_images/e98/ef8/696/e98ef86960895883e3da2f834f44f1fc.png)
5.3 2åã®ã¯ãªãã¯ã§Ajaxãªã¯ãšã¹ãã®URLãçæãã
ã·ã¹ãã ã®URLã¯åçã§ããããšãã°ãããã«ã®ã¢ãã¬ã¹ãå€ãããšãã³ã³ãããŒã©ãŒãåãæ¿ãããŸãã ãããè¡ãããã«ãã³ãŒãã¢ã»ã³ããªã®æ®µéã§åŠçãããå®éã®ãã¹ã眮ãæããããŒã¯ã³ãçºæãããŸããã
URLïŒajaxãªã¯ãšã¹ãããããã·URLïŒã®å²ãåœãŠãç°¡çŽ åããããã«ããã¡ã€ã«ãšã³ãŒãæ§é ãåæããã³ã³ããŒãã³ããèšè¿°ãããŠããŸãã Reflectionã䜿çšãããšãã³ã³ãããŒã©ã§äœ¿çšå¯èœãªã¢ã¯ã·ã§ã³ã®ãªã¹ããååŸããã³åæã§ããŸããããŠã¹ã§çªãã ãã§ãæã§æžãå¿ èŠããªããªããŸããã
ä»çµã¿ïŒãã¡ã€ã«ã·ã¹ãã ãã¹ãã£ã³ãããç®çã®ã¯ã©ã¹ãéžæãããã¡ãœããã®ãªã¹ããèŠæ±ãããã¡ãœããã®ã³ã¡ã³ããã€ã³ã¿ãŒãã§ã€ã¹ã®èª¬æãšããŠäœ¿çšãããŸãã ç®çã®URLã¯ãããããã£ãšããŠãã³ãã¬ãŒããšããŠèªåçã«ç»é²ãããŸãã
åæ§ã®æ¹æ³ã䜿çšããŠã¢ã€ã³ã³ãå²ãåœãŠãããšãã§ããŸãã
5.4ããŒã¿ããŒã¹ããã®æ§é ã®ã€ã³ããŒãããã©ãŒã ã®èªåäœæ
ããã°ã©ãã«ãšã£ãŠç掻ã楜ã«ããä»ã®æ¹æ³ã¯ïŒ ãã¡ãããããŒã¿ããŒã¹ãŸãã¯ORMã®æ§é ã«åºã¥ããŠããã©ãŒã ãã¹ãã¬ãŒãžãããŒãã«ã«ãã£ãŒã«ããã€ã³ããŒãããŸãã
ãã£ãŒã«ããã€ã³ããŒãããããŒãã«/ãªããžã§ã¯ããéžæããŸãã ã·ã¹ãã ã¯ãã®æ§é ãšããŒã¿åã«åºã¥ããŠãã»ã«å ã®å¿ èŠãªå€ãèªåçã«çœ®ãæãããã©ãŒã ã®éå±€ãåããŸãã
![]() | ![]() |
äŸãã°ãExt.form.field.Numberã¯intã«ãExt.form.field.Textã¯varcharã«äœ¿çšãããŸãã
éäžã§ããã£ãŒã«ããã£ãŒã«ããŸãã¯æ¥ä»åœ¢åŒã®å Žåããã£ãŒã«ããã£ãŒã«ãããã³ãã®ä»ã®ããããã£ã®å ŽåãfieldLabelãè¿œå ãããŸãã
èŠçŽ ãèšè¿°ããããã®éå±ãªæé ã¯ãæ°åã¯ãªãã¯ããã ãã§ãã
5.5å€éšãã¡ã€ã«ãšãããžã§ã¯ãã®æ¥ç¶
å€éšã®JSãã¡ã€ã«ãä»ã®ãããžã§ã¯ãããããžã§ã¯ãã«æ¥ç¶ããæ©äŒãäžããŠã¯ã©ãã§ããã ç¹å®ã®ã³ã³ããŒãã³ãïŒãšãã£ã¿ãŒïŒãèšè¿°ãããããžã§ã¯ããäœæã§ããŸããåŸã§ãå¿ èŠãªå Žæã«æ¥ç¶ããŸãã äž»ãªããšã¯ããããžã§ã¯ãããŒã ã¹ããŒã¹ãåé¢ããŠãã³ãŒããžã§ãã¬ãŒã¿ãŒãåãããžã§ã¯ããç¬èªã®ããŒã ã¹ããŒã¹ã«é 眮ããããšã§ããããã¯ããã»ã©é£ãããããŸããã
![](https://habrastorage.org/getpro/habr/post_images/1fe/e66/3ef/1fee663ef0db03f7c6783bdb16f7c9cc.png)
å¿ èŠãªã®ã¯ããã¡ã€ã«ãšãããžã§ã¯ãã®ãªã¹ããDesigner_Project apiã«è¿œå ããåå空éãå²ãåœãŠãããã®ãµããŒããè¿œå ããããšã ãã§ããã Designer_Project_Codeã¯ãåå空éå ã®ã³ãŒããå解ãããããžã§ã¯ããååž°çã«ã¬ã³ããªã³ã°ããããã«ãæ°æéã§ãã¬ãŒãã³ã°ãããŸããã
次第ã«ããã¶ã€ããŒã¯ãç·šéãŠã£ã³ããŠããã£ã«ã¿ãŒããªããžã§ã¯ããžã®ãªã³ã¯ã®ãã£ãŒã«ãããªããžã§ã¯ãã®ãªã¹ããªã©ãæ¢æã®ã³ã³ããŒãã³ããè£å ãå§ããŸããã
5.6ã€ã³ã¿ãŒãã§ã€ã¹ã®ããŒã«ã©ã€ãº
é·ãéãã€ã³ã¿ãŒãã§ã€ã¹ãããŒã«ã©ã€ãºããã¿ã¹ã¯ã¯æªè§£æ±ºã®ãŸãŸã§ããã 圌女ã®æ±ºå®ã«ã©ã®ããã«ã¢ãããŒããããã¯æ確ã§ã¯ãããŸããã§ããã ãããžã§ã¯ãå šäœã¯ã·ã³ãã«ãªãœãªã¥ãŒã·ã§ã³ã«åºã¥ããŠæ§ç¯ãããã®ã§ãç§ã¯åºããã§ã³ã¹ã§å²ã¿ããã¯ãããŸããã§ããããæéãããŸããããŸããã§ããã ããæç¹ã§çºèŠãããŸããã
ãã©ãããã©ãŒã èªäœã¯ããŒã«ã©ã€ãºãã¡ã€ã«ã䜿çšããŸããããããã®ãã¡ã€ã«ã¯ãããŒã«ãªãŒãŒã·ã§ã³ç®¡çã€ã³ã¿ãŒãã§ã€ã¹ã®å€æŽæã«åçæãããŸããã ãã®çµæãããŒãžäžã«ãã©ãŒã ã®ç¹å®ã®JSãªããžã§ã¯ãããããŸããã
appLang = { yes:ââ, no:ââ, cancel: '', ... };
ã¢ã€ãã¢ã¯åçŽã§ã-éçºè ãæååããããã£ã®å€ãšããŠJs-codeãå ¥åã§ããããã«ããããããããè¡ãããã«ãããŒã¯ã³ã[jsïŒ]ããçºæãããŸããïŒã³ãŒãçæäžããã®ãããªããŒã¯ã³ãæã€ããããã£ã¯js-codeãšããŠçºè¡ãããŸããïŒã
ããã¯ïŒ
![](https://habrastorage.org/getpro/habr/post_images/278/96b/e1d/27896be1d609191fe990356446b439bb.png)
ãããå¯èœã«ãªããŸããïŒ
![](https://habrastorage.org/getpro/habr/post_images/3cf/474/58e/3cf47458ec21c52e2caadbf76ce9c6e0.png)
ããŒã«ãªãŒãŒã·ã§ã³ç®¡çã€ã³ã¿ãŒãã§ãŒã¹ã®æºåããã§ã«æŽã£ãŠããããšãèãããšãããã䜿çšã§ããããšã¯åã³ã§ããã ãœãªã¥ãŒã·ã§ã³ã®å®è£ ã¯ããã®åŒ·ãã§20åããããŸããã ããã§ããã¡ã€ã«ã®å 容ãå€æŽããã«ãããžã§ã¯ããããŒã«ã©ã€ãºã§ããŸãã
5.7ã€ãã³ãããã³ã¡ãœãããšãã£ã¿ãŒ
次ã®ãã¬ãŒã¯ã¹ã«ãŒã¯ããªããžã§ã¯ããå±éããæ©èœã®è¿œå ã§ããããã¡ãœãããšã€ãã³ããè¿œå ã§ããããã«ãªããŸããã ã€ãã³ãã®å®è£ ã¯ãããããã£ã®å®è£ ã«éåžžã«äŒŒãŠããŸãã åæ§ã«ãã¡ãœãããå®è£ ãããŸããã ãã®æç¹ã§ãã·ã¹ãã ã¯Extã©ãããŒã«èšè¿°ãããŠããæšæºã€ãã³ããšãŠãŒã¶ãŒãäœæããã€ãã³ãã«åå²ãããŠããããã«èŠããŸããïŒã¡ãœããã¯ãæ¡åŒµãïŒisExtendedå±æ§ïŒãªããžã§ã¯ãã®ãŠãŒã¶ãŒã®ã¿ãäœæã§ããŸãïŒã
![]() | ![]() |
![]() | ![]() |
èšèšè ã¯ãæ確ã§èªã¿ãããã³ãŒãã®æ³¢ãçæãå§ããŸããã
ãã®åŸãã€ãã³ããã¡ãœããããªã¢ã¯ã·ã§ã³ãèŠçŽ å šäœã«æ£ãã°ã£ãŠãããããããç·šéããå ŽæãèŠã€ããã®ãé£ãããšããæãããªåé¡ãçŸããŸãã ãªããžã§ã¯ãããšã«ã°ã«ãŒãåãããã€ãã³ããšã¡ãœããã®ãªã¹ããæã€åå¥ã®ã¿ãããã¶ã€ããŒã«è¿œå ããŸãã Designer_Projectã«ãªããžã§ã¯ãã®ãªã¹ããèŠæ±ããã°ã«ãŒãåãããã°ãªããã®åœ¢åŒã§ãããã衚瀺ããŸãã
![]() | ![]() |
6ããã¯ãšã³ã
ããã¯ãšã³ãã®èŠ³ç¹ããã¯ããã¹ãŠãéåžžã«åçŽã§ãããä»»æã®ãã¬ãŒã ã¯ãŒã¯ã䜿çšã§ããŸãã ãããžã§ã¯ããæäœããããã®ã³ã³ãããŒã©ãŒãšã¢ã¯ã·ã§ã³ã®ã»ãããå¿ èŠã§ãã ã¢ããªã±ãŒã·ã§ã³ãèµ·åãããã¶ã€ããŒã®ãããžã§ã¯ããèªã¿èŸŒã¿ãDesigner_Project APIã«ã¢ã¯ã»ã¹ããã¡ãœããã®ãªã¹ããèšè¿°ãããããžã§ã¯ãã§ããŸããŸãªæäœãå®è¡ããŸãã æ©èœã®ãã¡ãçµã¿ç«ãŠããããããžã§ã¯ããã€ã³ã¿ãŒãã§ã€ã¹ã«åºåããå¿ èŠãªJSãã¡ã€ã«ãæ¥ç¶ã§ããã³ã³ãããŒã©ãŒãå¿ èŠã§ãã
ãŸãããã®ã±ãŒã¹ã§ã¯ããã¶ã€ããŒèªèº«ã®ãœãŒã¹ã³ãŒãããã«ãããã³çž®å°ããã¢ã¯ã·ã§ã³ãäœæãããŸãããããã«ããããšãã£ã¿ãŒã®èªã¿èŸŒã¿ãé«éåããããšãã§ããŸããã
7ãããžã§ã¯ããžã§ãã¬ãŒã¿ãŒ
ãžã§ãã¬ãŒã¿ãŒã¯ããããžã§ã¯ããã¡ã€ã«ã«å¯Ÿããäžé£ã®ã¢ã¯ã·ã§ã³ãå«ããã³ãã¬ãŒãã§ãã
ç°¡ç¥åããã圢åŒïŒ
// $project = new Designer_Project(); // Ext_Panel Ext.panel.Panel $panel = Ext_Factory::object('Panel',array( 'width'=>100, 'height'=>200, 'title'=>'My Panel', 'layout'=>'fit' )); // $panel->setName('myPanel'); // $project->addObject(0, $panel); // $designerStorage = Designer_Factory::getStorage($config); // $designerStorage->save($projectFile , $project);
åæ§ã®ãããžã§ã¯ãæ§é ãæã€ããšã§ãORMããŒã¹ã®ãããžã§ã¯ããžã§ãã¬ãŒã¿ãŒãäœæããããšã¯é£ãããããŸããã§ããã æ¥äžãæšæºã€ã³ã¿ãŒãã§ãŒã¹ãçæããããã®ããã€ãã®ãã³ãã¬ãŒããäœæãããŸãããæšæºã€ã³ã¿ãŒãã§ãŒã¹ãäœæããã®ã«æ°åã¯ãªãã¯ããã ãã§ãæ®ãã®æéã¯ã«ã¹ã¿ã èšèšãšæ¹è¯ã«è²»ããããŸããã
ãã¶ã€ããŒã®æåã®ããŒãžã§ã³ã®å®è£ ã«ã¯3é±éã®äŒæãå¿ èŠã§ãããããã¯ããã®ãããªã°ããŒãã«ãªç®æšãéæããããã®ããªãçãæéã§ããã
![](https://habrastorage.org/getpro/habr/post_images/f1c/ea3/fd4/f1cea3fd44a158102e06fed39ab81ef1.jpg)
åãåã£ãå©çïŒ
-æšæºã€ã³ã¿ãŒãã§ãŒã¹ã¯ã¯ã³ã¯ãªãã¯ã§çæããããã¶ã€ããŒã§ããã«éçºãããŸããã
-JSã³ãŒãã®ãšã©ãŒæ°ãå€§å¹ ã«åæžããŸããã
-è¥ãéçºè ã¯ExtJSãšè€éãªãããžã§ã¯ãã®éçºãæãäžããŸãã
-ã€ã³ã¿ãŒãã§ãŒã¹ã®å€æŽãã¯ããã«ç°¡åã§é¢çœããªããèŠçŽ ãããŠã¹ã1ååããã ãã§ç§»åã§ããŸããã³ãŒãã®äžéšãååŸããŠå¥ã®èŠçŽ ãšã®æ¥ç¶ãå¿ããå¿é ã¯ãããŸããã
-補åããã³ãããã¿ã€ãã®éçºé床ãåäžããŸããã
-ãã¿ã³ãŸãã¯åã®ååãå€æŽãããªã©ãç®çã®é ç®ãåæåããŠã³ãŒããæ€çŽ¢ãããšãã«åé¡ãçºçããªããªããŸããã
-ãã²ãã®äžã§ãç¬èªã®éçºç°å¢ãéçºããããšã§ãèå³æ·±ãçµéšãåŸãããŸããã
-PHPéçºã¯ããŸã£ããæ°ãã䟿å©ãªåœ¢åŒãç²åŸããŸããã
-ExtJSã®å€ãã®è€éããåŠã¶ããšãã§ããŸããããä»ãŸã§å¯ŸåŠããå¿ èŠã¯ãããŸããã§ããã
ãªãããããã¹ãŠå¿ èŠãªã®ã§ããïŒ
ExtJSã§é·å¹Žäœæ¥ããŠããç§ã¯ãåãããšãæžãã®ã«ããããããŠããŸãã ã³ã³ããŒãã³ããåæåããæ§æããŸããã³ã³ããã¹ãããããããäœãããªã³ã¯ãããããããšãæããŸãã å€æããããã«ããã®ã¿ã¹ã¯ã¯ç°¡åã«èªååããã空ãæéã«ãã£ãšé¢çœãããšãã§ããŸãã
ãã®ããŒã«ã¯éåžžã«æçšã§ããããšãå€æãããããOpenSourceã«è²¢ç®ããããã«ãã³ãã¥ããã£ãšå ±æããããšããèŠæããããŸããã èšèšè ããã³ãã®ä»ã®ããã€ãã®éçºãåèšèšããã1ã€ã®DVelumãã©ãããã©ãŒã ã«çµã¿èŸŒãŸããŸããããã®éçºã¯æ°å¹Žéç¶ç¶ãããŠããŸãã çµæã¯å ¬åŒãµã€ãdvelum.netã§èŠã€ããããšãã§ããŸã
![](https://habrastorage.org/getpro/habr/post_images/3dd/11a/4ce/3dd11a4cebd7745a843750682a28f2bb.gif)