我使用以下代码创建了新资源:
class WebserviceRequest extends WebserviceRequestCore {
public static function getResources(){
$resources = parent::getResources();
// if you do not have class for your table
$resources['test'] = array('description' => 'Manage My API', 'specific_management' => true);
$resources['categoryecommerce'] = array('description' => 'o jacie marcin', 'class' => 'CategoryEcommerce');
$mp_resource = Hook::exec('addMobikulResources', array('resources' => $resources), null, true, false);
if (is_array($mp_resource) && count($mp_resource)) {
foreach ($mp_resource as $new_resources) {
if (is_array($new_resources) && count($new_resources)) {
$resources = array_merge($resources, $new_resources);
}
}
}
ksort($resources);
return $resources;
}
}
新课程:
class CategoryEcommerceCore extends ObjectModelCore {
public $category_id;
public $category_core_id;
public static $definition = array(
'table' => "category_ecommerce",
'primary' => 'category_id',
'fields' => array(
'category_core_id' => array('type' => self::TYPE_INT),
)
);
protected $webserviceParameters = array();
}
Webservice正确覆盖。我的WebserviceRequest类正在复制到 /超驰/类/ web服务/ WebserviceRequest 但是当我安装我的模块时,班级并没有复制到/ override / classes /。
如何使用自己的逻辑添加新的资源?我想在我的表格中添加类别。
此致 马丁
答案 0 :(得分:2)
除了Webkul教程之外,没有任何关于API的内容......我试图实现“Webkul”教程,但也失败了。但是,似乎最好使用hooks
而不是覆盖。我使用我的“逆向工程技能”来确定创建API的方法,所以-O-o-o,BEHOLD! :d
假设您有一个自定义的PrestaShop 1.7模块。您的文件是mymodule.php
,这里有几个步骤。
public function install() { parent::install(); $this->registerHook('addWebserviceResources'); return true; }
public function hookAddWebserviceResources($resources) { $added_resources['test'] = [ 'description' => 'Test', 'specific_management' => true, ]; return $added_resources; }
specific_management
选项显示您将使用WebsiteSpecificManagement文件而不是数据库模型文件。
创建名为WebsiteSpecificManagementTest
的WebsiteSpecificManagement文件(Test - 是您的端点的CamelCased名称)。您可以从/classes/webservice/WebserviceSpecificManagementSearch.php
获取此文件的骨架。除去以下所有内容:
$this->output;
,仅此而已)添加
include_once(_PS_MODULE_DIR_.'YOURMODULENAME/classes/WebserviceSpecificManagementTest.php');
到你的模块文件(还没弄清楚如何自动包含)。
转到/Backoffice/index.php?controller=AdminWebservice
并为您的应用设置新的“Auth”密钥,从权限列表中选择test
端点。记住钥匙。
访问/api/test?ws_key=YOUR_KEY_GENERATED_ON_STEP_4
并查看XML响应。
将&output_format=JSON
添加到您的网址,以查看JSON中的回复。
您必须在$this->output = json_encode(['blah' => 'world'])
的{{1}}方法中使用manage
之类的内容。