Получение списка категорий в Akeneo

В документации Akeneo приведен следующий код: Использовать REST API . При выполнении кода он дает результат, например

RESULT:{"resource":"http:\/\/akeneo-pim.local\/api\/rest\/products\/OROMUG_DBO","family":"mugs","groups":OMUG_OB","OROMUG_ODB"]}}.....

Я хочу, чтобы категории присутствовали в Akeneo аналогичным образом. В приведенном выше коде используется ProductController из WebserviceBundle. Как мне действовать, чтобы получить категории аналогичным образом.


person Soumi Basu    schedule 07.10.2015    source источник


Ответы (2)


Действительно, Akeneo PIM пока предоставляет контроллер REST продукта только для внешних целей.

Единственное решение — создать собственный контроллер категорий для извлечения данных категорий из PIM.

Контроллер продукта — хороший шаблон для начала

Вы также можете взглянуть на наш внутренний контроллер категорий API, чтобы узнать, как правильно нормализовать категории.

person Julien Sanchez    schedule 07.10.2015

Вот пример кода для контроллера, отображающего форму, позволяющую выбирать среди всех существующих категорий из канала «печать».

public function indexAction()
{

    $channels = $this->channelRepository->getFullChannels(); 
    $selected_channel = null;

    /*
    * default channels are: 'print', 'mobile' 'ecommerce'
    */
    foreach($channels as $channel) {
        if('print' == $channel->getCode() ) {
            $selected_channel = $channel;
            break;
        }
    }
    $categories = [];

    /*
    * fill-in the array with the values we're interested in
    */
    if($selected_channel) {
        $category = $selected_channel->getCategory();
        $categories_ids = array_merge([$category->getId()], $this->categoryRepository->getAllChildrenIds($category));

        foreach($categories_ids as $category_id) {
            $category = $this->categoryRepository->find($category_id);
            $categories[] = array('id' =>$category->getId(), 'label' => $category->getLabel());
        }
    }

    return $this->templating->renderResponse('CfXmlBundle:Form:index.html.twig', array('categories' => $categories, 'locale' => 'en_US', 'scope' => null));
}

И соответствующий шаблон Twig:

<form>
    <div style="clear: both; width: 100%;">
        <label>Choose a catalog:</label>
        <select name="category_id" style="width: 100%;">
        {% for category in categories %}
        <option value="{{ category.id }}">{{ category.label }}</option>
        {% endfor %}
        </select>
    </div>
    <div style="clear: both; width: 100%">
        <label>Catalog title</label>
        <input type="text" name="title" value="" style="width: 100%;" placeholder="default is choosen catalog name" />
    </div>
    <div style="clear: both; width: 100%;">
        <label>Catalog description</label>
        <textarea name="description" style="width: 100%;"></textarea>
    </div>
    <div style="clear: both;">
        <input style="float: left;" type="checkbox" name="prices" value="0" />
        <label style="float: left;">&nbsp;Show prices ?</label>
    </div>
    <div style="clear: both; text-align:right;">
        <input type="submit" value="Generate" />
    </div>    
</form>
person Cédric Françoys    schedule 02.07.2016