2013-02-23 75 views

回答

7

首先創建一個使用http://www.silksoftware.com/magento-module-creator/這個基本的模塊,然後你必須創建以下文件,並在給定的路徑添加此文件。

模塊路徑= app/code/local/Restapi/Categories

1)應用程序/代碼/本地/ RESTAPI /分類的/ etc/api2.xml

<?xml version="1.0"?> 
<config> 
<api2> 
    <resource_groups> 
     <catalog translate="title" module="api2"> 
      <title>Catalog</title> 
      <sort_order>10</sort_order>  
     </catalog> 
    </resource_groups> 
    <resources> 
     <categories translate="title" module="api2"> 
      <group>catalog</group> 
      <model>categories/api2_category</model> 
      <title>Categories</title> 
      <sort_order>10</sort_order> 
      <privileges> 
       <admin> 
        <retrieve>1</retrieve> 
       <!-- <create>1</create> 
        <update>1</update> 
        <delete>1</delete> --> 
       </admin> 
       <customer> 
        <retrieve>1</retrieve> 
       <!-- <create>1</create> 
        <update>1</update> 
        <delete>1</delete> --> 
       </customer> 
       <guest> 
        <retrieve>1</retrieve> 
       <!-- <create>1</create> 
        <update>1</update> 
        <delete>1</delete> --> 
       </guest> 
      </privileges> 
      <attributes> 
       <category_id>Category ID</category_id> 
       <name>Name</name> 
       <parent_id>Category Parent ID</parent_id> 
       <child_id>Category Child List</child_id> 
       <active>Active</active> 
       <level>Level</level> 
       <position>Position</position> 
      </attributes> 
      <routes> 
       <route> 
        <route>/categories/:cat_id</route> 
        <action_type>collection</action_type> 
       </route> 
      </routes> 
      <versions>1</versions> 
     </categories> 
    </resources> 
</api2> 
</config> 

這裏CAT_ID是類別ID,我們通過抓取子類別。

2)應用程序/代碼/本地/ RESTAPI /分類/型號/ API2 /分類/ REST /客戶/ V1.php

<?php 
class Restapi_Categories_Model_Api2_Category_Rest_Customer_V1 extends Restapi_Categories_Model_Api2_Category 
{ 
/** 
* Retrieve list of category list. 
* 
* @return array 
*/ 
protected function _retrieveCollection() 
{ 
    $ruleId = $this->getRequest()->getParam('cat_id'); 

// $cat_mod = Mage::getModel('catalog/category')->load($ruleId)->toArray(); 
    $cats = Mage::getModel('catalog/category')->load($ruleId); 
    $subcats = Mage::getModel('catalog/category')->load($ruleId)->getChildren(); 

    $cur_category = array(); 

    $node['category_id'] = $ruleId; 
    $node['name'] = $cats->getName(); 
    $node['parent_id'] = $cats->getParentId(); 
    $node['child_id'] = $subcats; 
    if($cats->getIsActive()){ 
     $node['active'] = 1; 
    }else{ 
     $node['active'] = 0; 
    } 
    $node['level'] = $cats->getLevel(); 
    $node['position'] = $cats->getPosition(); 

    $cur_category[] = $node; 

// $subcats = Mage::getModel('catalog/category')->load($ruleId)->getAllChildren(); 
// $subcats = Mage::getModel('catalog/category')->load($ruleId)->getChildren(); 

    if($subcats != '') 
    { 
     foreach(explode(',',$subcats) as $subCatid) 
     { 
      $_category = Mage::getModel('catalog/category')->load($subCatid); 
      $childcats = Mage::getModel('catalog/category')->load($subCatid)->getChildren(); 

      $node['category_id'] = $subCatid; 
      $node['name'] = $_category->getName(); 
      $node['parent_id'] = $_category->getParentId(); 
      $node['child_id'] = $childcats; 
      if($_category->getIsActive()){ 
       $node['active'] = 1; 
      }else{ 
       $node['active'] = 0; 
      } 
      $node['level'] = $_category->getLevel(); 
      $node['position'] = $_category->getPosition(); 

      $cur_category[] = $node; 

     } 
    } 

    return $cur_category;  
} 

你還在這個路徑添加此相同的V1.php文件如果您有其他用戶,如管理員和來賓。

app/code/local/Restapi/Categories/Model/Api2/Category/Rest/Admin/V1.php

app/code/local/Restapi/Categories/Model/Api2/Category/Rest/Guest/V1.php

只要你想改變V1.php類文件的路徑,如客戶名= Admin。

+0

嘿,我得到了完全相同的問題,並試圖在magento CE 1.9中的解決方案,但它不工作。相反,我得到以下錯誤:錯誤404,消息:「請求不匹配任何路由。」任何幫助? – BornToCode 2014-11-24 09:25:31

+0

我想你在瀏覽器中寫錯了路線和網址。 – 2014-11-24 10:44:09

+0

以前的錯誤已解決,但仍無法使用。錯誤消息:「未找到資源」。 – BornToCode 2014-11-24 10:44:30