在 prestashop 网络服务的其余 api 中添加新的 table
Adding new table in rest api of prestashop webservice
我已经成功地在 prestashop 产品 table 到 rest api 中创建了一个额外的 table的 webservice ,但是 api link http://127.0.0.1/prestashop/api/wb3d/1 wb3d 是我在 webservice 中创建的新 table .其中包含网络上某处图像目录的路径。 link 打开时显示已保存在数据库中的数据,如下图所示
model 是网络上的目录名称,因此此 api(wb3d) 已与 产品关联 table 在网络服务中 link:http://127.0.0.1/prestashop/api/products/1 当我打开这个 link 时。显示了协会的入口但没有显示数据**参考下图**
突出显示的区域显示了与产品 table 相关的 wb3d table throught rest api 的 webservice 。我无法将 wb3d 故事数据与产品 table 数据相关联。这样我就可以通过webservice在其他设备上使用了
这是我目前尝试过的方法
<?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 负责在产品 table.
中创建关联 table 条目
<?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 中用于覆盖 产品 class 用于传递 额外参数通过webserviceparameters(),然后调用产品的父构造函数class
<?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 class 是 WebserviceRequest class 的覆盖 class,它显示了 table 网络服务中的条目
这些是完成任务所需的文件。 我想要实现的是关联的 table (wb3d) 数据应该在产品 table 中通过 webservice rest api 调用 可用。
如果您想添加其他网络服务 table 作为您与产品的关联,您可以在 category.php 中查看关联是如何完成的位于 prestashop/classes.
'associations' => array(
'categories' => array('getter' => 'getChildrenWs', 'resource' => 'category', )
)
如您所见,有一个名为 getter 的参数,它从
getChildrenWs 这是 category.php 中的一个方法,它从数据库中获取数据。
所以在你的情况下:在 Product.php
$this->webserviceParameters['associations']['wb3d'] = array('resource' => 'wb3d',
'getter' => 'yourMethodName',
'fields' => array('directory_name' => array('required' => true));
并在 Product.php
中创建名为“yourMethodName”的方法
public function yourMethodName()
{
//copy the getChildrenWs method which is in Category.php and alter it to ur needs
}
我已经成功地在 prestashop 产品 table 到 rest api 中创建了一个额外的 table的 webservice ,但是 api link http://127.0.0.1/prestashop/api/wb3d/1 wb3d 是我在 webservice 中创建的新 table .其中包含网络上某处图像目录的路径。 link 打开时显示已保存在数据库中的数据,如下图所示
突出显示的区域显示了与产品 table 相关的 wb3d table throught rest api 的 webservice 。我无法将 wb3d 故事数据与产品 table 数据相关联。这样我就可以通过webservice在其他设备上使用了
这是我目前尝试过的方法
<?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 负责在产品 table.
中创建关联 table 条目 <?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 中用于覆盖 产品 class 用于传递 额外参数通过webserviceparameters(),然后调用产品的父构造函数class
<?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 class 是 WebserviceRequest class 的覆盖 class,它显示了 table 网络服务中的条目
这些是完成任务所需的文件。 我想要实现的是关联的 table (wb3d) 数据应该在产品 table 中通过 webservice rest api 调用 可用。
如果您想添加其他网络服务 table 作为您与产品的关联,您可以在 category.php 中查看关联是如何完成的位于 prestashop/classes.
'associations' => array(
'categories' => array('getter' => 'getChildrenWs', 'resource' => 'category', )
)
如您所见,有一个名为 getter 的参数,它从 getChildrenWs 这是 category.php 中的一个方法,它从数据库中获取数据。
所以在你的情况下:在 Product.php
$this->webserviceParameters['associations']['wb3d'] = array('resource' => 'wb3d',
'getter' => 'yourMethodName',
'fields' => array('directory_name' => array('required' => true));
并在 Product.php
中创建名为“yourMethodName”的方法public function yourMethodName()
{
//copy the getChildrenWs method which is in Category.php and alter it to ur needs
}