我已经成功地在 prestashop 产品表中创建了一个额外的表格,通过web服务的 rest api ,但是api链接 {{3 wb3d是我在webservice中创建的新表。它保存了网络上某个图像目录的路径。打开时,此链接显示已保存在数据库中的数据,如下图所示
模型是网络上的目录名称,因此 api(wb3d)已与链接的网络服务中的产品表相关联:http://127.0.0.1/prestashop/api/wb3d/1 ,当我打开此链接时。显示关联条目,但未显示数据**请参阅下图**
突出显示的区域显示与webservice的rest api关联的产品表的wb3d表。我无法将wb3d故事数据与产品表数据相关联。所以我可以通过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 负责在产品表中创建关联表条目。
<?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 在products表中可用。
答案 0 :(得分:1)
如果您想添加其他网络服务表作为您与产品的关联,您可以查看如何在位于 prestashop / classes category.php 中完成关联>
'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));
并创建一个名为&#39; yourMethodName &#39;的方法在Product.php中
public function yourMethodName()
{
//copy the getChildrenWs method which is in Category.php and alter it to ur needs
}