2015-04-30 1 views
2

Я был успешным в создании дополнительной таблицы в PrestaShop таблице продукции Повсеместно остальное апи из WebService, однако ссылка апи http://127.0.0.1/prestashop/api/wb3d/1 wb3d является новая таблица, которая Я создал в webservice. Которая содержит путь к каталогу изображений где-то в Интернете. Эта связь при открытии показывает данные, которые были сохранены в базе данных, как показано на следующем рисунке нижеДобавление новой таблицы в REST API из PrestaShop WebService

enter image description here модели это имя каталога в Интернете, так что это апи (wb3d) было связано с Таблица продуктов в webservice link: http://127.0.0.1/prestashop/api/products/1, когда я открываю эту ссылку. Запись ассоциации показана, но данные не отображаются ** см. Ниже изображение ** enter image description here

В выделенной области отображается таблица wb3d, связанная с таблицей продуктов, через точку api webservice. Я не могу связать данные истории wb3d с данными таблицы продуктов. Так что я могу использовать его в других устройствах с помощью веб-сервиса

Это то, что я пытался до сих пор

<?php 
class ProductMergeCore extends ObjectModel 

{ 
    public $product_id; 
    public $id_wb3d; 
    public $directory_name; 
    public static $definition = array(
    'table' => 'wb3d', 
    'primary' => 'id_wb3d', 
    'fields' => array(
    'id_wb3d' => array('type' => self::TYPE_INT, 'required' => true), 
    'product_id' => array('type' => self::TYPE_INT, 'required' => true), 
    'directory_name' => array('type' => self::TYPE_STRING, 'required' =>false, 'size' => 64), 
    ), 
    ); 
    protected $webserviceParameters = array(); 
    } 
    ?> 

productmerge.php отвечает за создание записи ассоциированной таблицы в таблице продуктов.

<?php 

    Class Product extends ProductCore 

    { 

    public $extrafield; 



public function __construct($id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null) 

{ 


    $this->webserviceParameters['associations']['wb3d'] = array('resource' => 'wb3d','fields' => array('directory_name' => array('required' => true))); 

    parent::__construct($id_product, $full, $id_lang, $id_shop, $context); 

} 

} 
?> 

В этом product.php, который для подмены класса продукта для прохождения дополнительных параметров через webserviceparameters() и затем вызвать родитель конструктора класса продукта

<?php 
    class WebserviceRequest extends WebserviceRequestCore 
    { 
    public static function getResources() 
    { 
    $resources=parent::getResources(); 
    $resources['wb3d'] = array('description' => 'images path', 'class' => 'ProductMerge'); 
    ksort($resources); 
    return $resources; 
    } 
    } 
    ?> 

WebserviceRequest.php класс является классом переопределения для класса WebserviceRequest, который показывает описание записи в таблице в webservice

Это файлы, необходимые для выполнения этого действия. То, что я пытаюсь достичь, - это связанная таблица (wb3d) должна быть доступна в таблице продуктов через webservice rest api call.

+0

почему вы хотите, чтобы добавить его в класс продукта, если вы хотите получить информацию о каталоге продукта, попробуйте запросить wb3d webservice, который вы должны добавить в свой класс. –

+0

wb3d - это каталог, в котором хранятся изображения в Интернете, поэтому я сохраняю путь в прямой ory_name в таблице wb3d. то, что мне нужно достичь, - это каталог продукта, который должен также включать этот каталог, поэтому мне нужно сделать больше, чем один вызов api с любого другого устройства, эти изображения принадлежат продукту, поэтому мне нужна эта таблица wb3d, связанная с продуктом table – abhishek

+0

Я вижу product_id в wb3d, что делать? если вы видите количество запаса для продукта, оно хранится в уникальном веб-сервисе (stock_available), даже если оно включено в продукт asciations webservice, то, что я рекомендую использовать пользовательский веб-сервис для этого –

ответ

1

если и хочет, чтобы добавить другую таблицу WebService в вашей ассоциации с вашим продуктом, вы посмотрите на то, как объединения осуществляются в category.php расположенного в Prestashop/классах может.

'associations' => array(
    'categories' => array('getter' => 'getChildrenWs', 'resource' => 'category',)   
) 

, как вы можете видеть, что есть параметр с именем геттером, который получает значение от getChildrenWs который является методом category.php, который извлекает данные из базы данных.

так в вашем случае: в product.php

$this->webserviceParameters['associations']['wb3d'] = array('resource' => 'wb3d', 
                  'getter' => 'yourMethodName', 
                  'fields' => array('directory_name' => array('required' => true)); 

и создать метод, названный 'yourMethodName' в product.php

public function yourMethodName() 
{ 
    //copy the getChildrenWs method which is in Category.php and alter it to ur needs 
} 
+0

Я думаю, что это то, что я искал, я попробую это извещение и дайте вам знать здесь. Спасибо за ваше время. – abhishek

+0

Это помогло мне решить проблему, и я также понял, что процесс работы модуля preashop очень много, я опубликую код, который будет решать мой собственный вопрос здесь. Спасибо за ваше время @kiran – abhishek