Create new magento Rest api to get category list in magento
Asked Answered
M

1

4

Does anyone know how to create new magento rest api to get category listing.

I already saw this link magento rest api but this not fetch category listings.

If any one knows then please solve this..

Mount answered 23/2, 2013 at 6:22 Comment(0)
M
7

First create basic module using http://www.silksoftware.com/magento-module-creator/ this and then you have to create following file and add this file in given path.

Module path = app/code/local/Restapi/Categories

1) app/code/local/Restapi/Categories/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>

Here cat_id is category id which we pass to fetch child category.

2) app/code/local/Restapi/Categories/Model/Api2/Category/Rest/Customer/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;       
}

you also add this same V1.php file in this path if you have other user like admin and guest.

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

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

Just you want to change the class path in V1.php file like Customer = Admin.

Mount answered 2/4, 2013 at 6:42 Comment(10)
Hey, I got exactly the same problem and tried your solution in magento CE 1.9, but it is not working. Instead I got the following error: error 404, message:"Request does not match any route." any help?Clansman
Previous error is resolved, but still not worked. Error message now: "Resource not found".Clansman
send me your code to [email protected]. i will check it.Mount
Thanks, your example was simply not complete :). I had not created class Restapi_Categories_Model_Api2_Category.Clansman
What's inside the class Restapi_Categories_Model_Api2_Category ? And what's the REST URL?Discounter
@BornToCode and Bharat can you check this question https://mcmap.net/q/1174584/-custom-rest-api-in-magentoGumma
@BharatChodvadiya Hey can you tell how I can get subcategroies list and then how to access them and then subsub category of subcategory till end.Gumma
how to call this? i means does it [BASE_URL]/api/rest/categories ??Giguere
You can call using this url. magentohost/api/rest/categories/:cat_id. Here magentohost is your domain and :cat_id is the parent category id which needs to list parent and child category list. If you need to list parent and sub category of child category both then need recursive function under V1.php file.Mount
I am having the same issue getting "Resource Not Found". anything still missing in implementation @BharatChodvadiyaArjan

© 2022 - 2024 — McMap. All rights reserved.