PrestaShop 1.7 添加新资源和类
Posted
技术标签:
【中文标题】PrestaShop 1.7 添加新资源和类【英文标题】:PrestaShop 1.7 Add new resources and class 【发布时间】:2018-04-18 09:31:57 【问题描述】:我用这段代码创建了新资源:
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 正在复制到 /覆盖/类/webservice/WebserviceRequest 但是当我安装我的模块时,类没有复制到 /override/classes/。
如何使用自己的逻辑添加新资源?我想添加与我的表相关的类别。
问候 马丁
【问题讨论】:
【参考方案1】:一旦除了 Webkul 教程之外几乎没有关于 API 的内容......我尝试实现“Webkul's”教程,但也失败了。但是似乎最好使用hooks
而不是覆盖。我使用我的“逆向工程技能”来确定创建该 API 的方式,所以-o-o-o,看! :D
假设您有一个自定义 PrestaShop 1.7 模块。您的文件是mymodule.php
,这里有几个步骤。
-
这是一种安装方法,允许您在数据库中注册挂钩(您可以卸载并重新安装模块以执行此方法):
-
添加钩子监听器:
specific_management
选项表明您将使用 WebsiteSpecificManagement 文件而不是数据库模型文件。
创建名为 WebsiteSpecificManagementTest
的 WebsiteSpecificManagement 文件(测试 - 是您的端点的 CamelCased 名称)。您可以从/classes/webservice/WebserviceSpecificManagementSearch.php
获取此文件的骨架。删除所有内容,除了:
$this->output;
,仅此而已)
管理 - 你应该重写它以返回/处理你想要的数据。
添加
到你的模块文件(还没有弄清楚如何自动包含)。
转到/Backoffice/index.php?controller=AdminWebservice
并为您的应用程序设置新的“Auth”密钥,从权限列表中选择test
端点。记住钥匙。
访问 /api/test?ws_key=YOUR_KEY_GENERATED_ON_STEP_4
并查看 XML 响应。
将&output_format=JSON
添加到您的 URL 以查看 JSON 格式的响应。
你必须在WebsiteSpecificManagementTest
的manage
方法中使用$this->output = json_encode(['blah' => 'world'])
之类的东西。
【讨论】:
我的建议是,如果您想添加另一个端点,例如:custom_task
,或者已经安装了模块但它还没有钩住它的第一次安装,那么最好卸载模块,并且然后再次安装它,以查看(添加)custom_task
端点到 Web 服务端点列表。以上是关于PrestaShop 1.7 添加新资源和类的主要内容,如果未能解决你的问题,请参考以下文章
如何在 prestashop 1.7 中向 cms 页面添加挂钩