CakePHP中的自定义数据源无法正常工作

时间:2013-06-01 20:43:23

标签: cakephp model datasource

我正在尝试在CakePHP中为Amazon Web Services创建自定义数据源。我的方法如下:

  • 创建签名的基础AwsDataSource,发出实际的HTTP请求等
  • 扩展此类并指定要使用的端点的每个AWS产品(即S3,SQS等)的各种数据源
  • S3BucketSqsQueueSqsMessage等内容的模型

我的基础数据源类看起来像这样(简化):

<?php
class AwsDataSource extends DataSource {

    public $config = array(
        'key' => '',
        'secret' => '',
        'region' => ''
    );
    public $endpoint;

    public function signRequest($parameters) {
        // generates signature
    }

    public function makeRequest($parameters = array(), $method = 'get') {
        // generates signature and makes HTTP request to AWS servers
    }
}

示例模型如下所示:

<?php
class SqsQueue extends AwsAppModel {

    public $name = 'SqsQueue';
    public $useTable = false;
}

我的问题是尝试在我的CakePHP应用程序中使用这些模型/数据源。

我已根据the CakePHP cookbook在我的AWS数据源中实现了名为create()read()update()delete()的方法,但它们似乎没有被叫。我知道这是因为我在我的数据源中添加了die()语句并带有消息,并且永远不会停止执行。

我已经筋疲力尽了这本食谱,所以如果有人能告诉我如何让我的模型在我的数据源课程中调用CRUD方法,那么我将非常感激。

1 个答案:

答案 0 :(得分:0)

我的坏。事实证明我的方法存在缺陷。

数据源在数据库配置中指定,并指定为AwsDataSource。因此,永远不会使用S3DataSourceSqsDataSource,即使我已经定义了我的CRUD方法,因此我的应用程序永远不会退出(因为CRUD方法未在AwsDataSource中定义,被调用的实际数据源。)

看起来它又回到了绘图板。