MagentoïŒããã³ä»ã®å€ãã®OOPã·ã¹ãã ïŒã®ããžãã¯ã«ããã°ãããŒã¿ã®ååŸããã³ä¿åã®æ¹æ³ãèæ
®ããã«ããªããžã§ã¯ã/ã¢ãã«ããã³ã³ã¬ã¯ã·ã§ã³ã®ã¬ãã«ã§ããŒã¿åŠçãå®è¡ããå¿
èŠããããŸãã ããŒã¿ã®ååŸãšä¿åã®æäœã¯ããªãœãŒã¹ã¢ãã«ã«äžäœã¬ãã«ãšããŠæ®ãããŸã-ãã®åŸãããŒã¿ã®ä¿åæ¹æ³ïŒããŒã¿ããŒã¹ããã¡ã€ã«ãªã©ïŒãå€æŽããå ŽåãåŠçããžãã¯ãå€æŽããå¿
èŠã¯ãããŸãããããªãœãŒã¹ã¢ãã«ãå€æŽããã ãã§ãããŒã¿ã®åä¿¡ãšä¿åã«åŸäºã ã¢ãã«ã䜿çšããŠãã¥ãŒã¹åºåãããçŽããIDã«ãããã¥ãŒã¹ã³ã³ãã³ãã®åºåãè¿œå ããŸãã
- æ§æãã¡ã€ã«å
ã®ã¢ãã«ããŒãã«ã¯ã©ã¹ããŒããè¿œå ããŸãã
<?xml version="1.0" ?> <config> <modules> ... </modules> <frontend> ... </frontend> <global> <models> <dsnews> <class>DS_News_Model</class> <resourceModel>dsnews_resource</resourceModel> </dsnews> <dsnews_resource> <class>DS_News_Model_Resource</class> <entities> <table_news> <table>ds_news_entities</table> </table_news> </entities> </dsnews_resource> </models> <resources> ... </resources> </global> </config>
- ãã¥ãŒã¹ã¢ãã«ãã¡ã€ã«ã¢ãã«ã®äœæ/ News.php
<?php class DS_News_Model_News extends Mage_Core_Model_Abstract { public function _construct() { parent::_construct(); $this->_init('dsnews/news'); } }
- ãã¥ãŒã¹ã¢ãã«ãªãœãŒã¹ãã¡ã€ã«ã¢ãã«ã®äœæ/ãªãœãŒã¹/News.php
<?php class DS_News_Model_Resource_News extends Mage_Core_Model_Mysql4_Abstract { public function _construct() { $this->_init('dsnews/table_news', 'news_id'); } }
- ã³ã¬ã¯ã·ã§ã³ãªãœãŒã¹ãã¡ã€ã«ãäœæããModel / Resource / News / Collection.php
<?php class DS_News_Model_Resource_News_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract { public function _construct() { parent::_construct(); $this->_init('dsnews/news'); } }
- ã³ã³ãããŒã©ãŒã³ã³ãããŒã©ãŒã®å€æŽ/ IndexController.php
<?php class DS_News_IndexController extends Mage_Core_Controller_Front_Action { public function indexAction() { $news = Mage::getModel('dsnews/news')->getCollection()->setOrder('created', 'DESC'); $viewUrl = Mage::getUrl('news/index/view'); echo '<h1>News</h1>'; foreach ($news as $item) { echo '<h2><a href="' . $viewUrl . '?id=' . $item->getId() . '">' . $item->getTitle() . '</a></h2>'; } } public function viewAction() { $newsId = Mage::app()->getRequest()->getParam('id', 0); $news = Mage::getModel('dsnews/news')->load($newsId); if ($news->getId() > 0) { echo '<h1>' . $news->getTitle() . '</h1>'; echo '<div class="content">' . $news->getContent() . '</div>'; } else { $this->_forward('noRoute'); } } }
ããã§ããªã³ã¯
http://site.com/newsãã¯ãªãã¯ãããšããã¥ãŒã¹ã®å
容ãå«ãããŒãžãéããªã³ã¯ãã¯ãªãã¯ãããšããªã³ã¯ã®åœ¢ã§ãã¥ãŒã¹ã®ãªã¹ããéããŸãã
ã¹ããã1ã§ã¯ã
ã¯ã©ã¹ããŒããæ§æãã¡ã€ã«ã«è¿œå ããã
DS_News_Modelã¢ãã«ãšDS_News_Model_ResourceãªãœãŒã¹ã®åºæ¬çãªã¯ã©ã¹ãã¬ãã£ãã¯ã¹ãç»é²ãããŸãã
ã³ã³ãããŒã©ãŒïŒã¢ã€ãã 5ïŒã®ã¢ãã«ãèŠæ±ãããšãã
Mage :: getModelïŒ 'dsnews / news'ïŒ ã
getModelé¢æ°ã¯ãã¢ãã«ã¯ã©ã¹åã®åœ¢æå
ã§ãã
[model] / [class]åã®æååãåãå
¥ããŸãã
[model]ã¯æ§æããŒãã®ååã§ã
/ global / models / [model] ã
ã¯ã©ã¹ããŒãã®å€ã®
ååŸå
-DS_News_Model ãããã³å€
[class]ããã®ã¯ã©ã¹ãã¬ãã£ãã¯ã¹ã«è¿œå ãããŸãïŒååèª
[class]ã®æåã®æåã¯å€§æåã«å€æãããŸãïŒã ããšãã°ã
DS_News_Model_Newsã¯ã©ã¹ã¯
dsnews / news è¡ãã
ååŸããã
DS_News_Model_News_Galleryã¯ã©ã¹ã¯
dsnews / news_gallery è¡ãã
ååŸãããŸãã
ç¯2ã§ã¯ãåºæ¬çãª
DS_News_Model_Newsãã¥ãŒã¹ã¢ãã«ã
äœæãã ããã®ã³ã³ã¹ãã©ã¯ã¿ãŒã§ãªãœãŒã¹
$ this-> _ initïŒ 'dsnews / news'ïŒãåæåãããŸãïŒãã©ã¡ãŒã¿ãŒãšããŠãé¢æ°ã¯æåå
[model] / [class]ãåããŸãã
[model]ã¯ããŒãã®ååã§ã
config / global / models / [model] ãããã³
[class]ã¯
ã¯ã©ã¹ã®ååã§ãã ãã ããã¢ãã«ãšã¯ç°ãªãããªãœãŒã¹ã¯ã©ã¹ãã¯ã©ã¹ãã¬ãã£ãã¯ã¹ãšããŠåæåããã«ã¯ã
resourceModelããŒãã®ã¢ãã«ã«ãã£ãŠåç
§ããã
ãªãœãŒã¹ã®
config / global / models / [resourceModel] / classããŒãã®å€ã䜿çšããŸãã ãã®çµæããªãœãŒã¹
$ this-> _ initïŒ 'dsnews / news'ïŒãåæåãããšãã«ã
DS_News_Model_Resource_Newsã¯ã©ã¹ãåæåãããŸãã
ã¹ããã3ã§ã¯ããªãœãŒã¹ã¯ã©ã¹
DS_News_Model_Resource_NewsãäœæãããŸãã
ãã®ã¯ã©ã¹ã§ã¯ãããŒãã«
$ this-> _ initïŒ 'dsnews / table_news'ã 'news_id'ïŒãåæåãããŸã ãæåã®ãã©ã¡ãŒã¿ãŒã¯ç®çã®ããŒãã«ã®ååãžã®ãã¹ã§ã2çªç®ã¯äž»ããŒãšããŠäœ¿çšããããã£ãŒã«ãã§ãïŒäž»ããŒïŒããŒãã«ã
ç¯4ã§ã¯ããªããžã§ã¯ãã³ã¬ã¯ã·ã§ã³ã¯ã©ã¹ãåæåããããã®ã³ã³ã¹ãã©ã¯ã¿ãŒã§åæã¢ãã«
DS_News_Model_NewsãåæåãããŸãã
ãã©ã°ã©ã5ã§ã¯ãããŒã¿ããŒã¹ããã®ããŒã¿ã®åä¿¡ã«å€æŽããããŸãã ä»åã¯ãã¢ãã«ãšã³ã¬ã¯ã·ã§ã³ã䜿çšãããŸãã
indexActionã¢ã¯ã·ã§ã³ã§ã¯ããã¹ãŠã®ãã¥ãŒã¹ã¯
$ news = Mage :: getModelïŒ 'dsnews / news'ïŒ-> getCollectionïŒïŒcollectionãååŸããããšã§èŠæ±ãããŸãã ã³ã¬ã¯ã·ã§ã³ã¯ã©ã¹ã®ååã¯ãã¢ãã«
DS_News_Model_Resource_News +
_Collectionã®ãªãœãŒã¹ã¯ã©ã¹ã®ååããèšç®ãããŸãã
viewActionã¢ã¯ã·ã§ã³ã§ã¯ããªã¯ãšã¹ãã§åä¿¡ããIDã«ãã£ãŠ
ãã¥ãŒã¹ãããŠã³ããŒããããŸãã ãã®IDã®ãã¥ãŒã¹ãååšããå Žåããã¥ãŒã¹ãšã³ã³ãã³ãã®ååã衚瀺ãããŸãã ãã以å€ã®å ŽåãããŒãž404ãçæãããŸãã