如何使用 Modx Revolution API

问题描述 投票:0回答:2

我有一位客户正在考虑让其他公司开发一款 iPad 应用程序,该应用程序将从他们现有的 modx 实例中提取资源。 [不 - 我不知道为什么它需要是一个应用程序......]

他们正在寻求使用 Modx API,据我所知,到目前为止,它需要一个连接器或编写的东西,因为它不能“正常工作”正确?

所以基本上我需要编写一个连接器来处理身份验证[API密钥类型想法]并来回传递所有数据?看这里:http://rtfm.modx.com/display/revolution20/Loading+MODx+Externally我看到两种连接/使用modx的方法 - “从外部加载modx”相对于“在api中加载modx”有什么优势模式”

我很容易找到 API 文档,但实际使用它几乎为零。

所以:

  1. 有 API 使用文档吗?
  2. 外部加载与 API 加载方法的优点/优点/缺点是什么
  3. 我上面的所有假设都是正确的,还是我错过了一些非常基本的东西?
php modx modx-revolution
2个回答
2
投票

您已找到足以使用 API modx 的文档。连接模式 API(http://rtfm.modx.com/display/revolution20/Loading+MODx+Externally - 我最喜欢的第三个示例)后,您可以使用 modx 处理器执行任何必要的操作,例如验证用户:

if(isset($_POST) && count($_POST)){
    $c = array(
        'username' => $_POST['username'],
        'password' => $_POST['password']
    );
    $response = $modx->runProcessor('security/login',$c);
    if($response->response['success'] == 1){
        $user['id'] = $modx->user->get('id');
                $profile = $modx->user->getOne('Profile');
        $user['fullname'] = $profile->get('fullname');
        $user['email'] = $profile->get('email');
        echo json_encode($user);
    }else{
        echo json_encode($response->response); 
    }
}

简单获取资源:

if ($res = $modx->getObject('modResource', 1)) {
    print_r($res->toArray());
}

或高级获取:

$response = $modx->runProcessor('resource/get', array('id' => 1));
if (!$response->isError()) {
    print_r($response->response['object']);
}
else {
    $modx->log(modX::LOG_LEVEL_ERROR, $response->getMessage());
}

0
投票

多年来,ModX 文档并不是它的强项,但这里有一些链接。

首先,了解 ModX 的工作原理和架构,以便您可以使用它/为其进行开发。

ModX 的 API 参考位于 https://api.modx.com/revolution/2.2/。在那里您将找到所有可用的方法、其属性和参数。这不是指南,而是参考,所以不要期望太多文献。

从版本 2.3 开始,您可以在 ModX 之上构建您的 自己的 API。对于自定义 RESTful 端点非常有用,但除非您有一些工作/构建 API 的经验,否则这可能具有挑战性。

最后,如果您正在寻找更深入的文档

查看书籍

例如,这就是让 ModX 对象从外部可用的方法:

<?php require_once '/absolute/path/to/modx/config.core.php'; require_once MODX_CORE_PATH.'model/modx/modx.class.php'; $modx = new modX(); $modx->initialize('web'); $modx->getService('error', 'error.modError');
    
© www.soinside.com 2019 - 2024. All rights reserved.