问题:我需要知道的是如何将不同的数据库(mongodb)合并到ATK4中? 具体做法是:
一些注意事项:
关于我的一些事情:我是php的总菜鸟。我的主要编码框架是.NET(vb& c#(winforms和asp(webforms和mvc)))
我一直在玩CodeIgniter并喜欢它。我的一位同事让我看看ATK4,我必须说到目前为止我对此印象深刻。
但是,如果我要为我的项目采用ATK4,我需要能够使用MongoDB。让我说清楚:我不是要求任何人为我编写代码。我只需要一些关于php和atk4约定的指导。关于这些事情的网站上的文档目前有点稀疏(不存在)。
答案 0 :(得分:0)
你有两个选择,都是抽象的。首先涉及创建模型和控制器,网格和其他视图将自动识别。第二,您需要从MongoDB获取数据并插入静态表。
支持Mongo的观点
这种方法要求您了解模型的运作方式。特别是你需要了解MVCGrid,setController,setModel以及mvc / Controller.php。然后,您需要创建自己的控制器。然后你需要拥有使用你的控制器的AbstractView :: setModel()的副本,它将正确地知道如何从MongoDB获取数据。
此外,您可能需要扩展Grid(或MVCGrid)以正确传输数据。
完成后,您可以这样做:
$形式 - > setMongoModel( '为MyModel') - > loadData(123);
(如果你使用的是GIT版本,你可以实际注入这个方法: https://github.com/atk4/atk4-testsuite/blob/master/page/core.php#L108
半自动化方法
在这种方法中,您需要自己从MongoDB控制器加载数据并将其提供给网格或表单。网格和表单都可以很好地处理静态数据。在这种情况下,你需要这样的东西:
$c=$this->add('MongoController');
$data=$c->load($my_model,123);
$grid->setStaticSource($data);
您的其他任务的答案
Code Igniter是一个不错的框架,但它全局实例化对象。您不太可能需要2个相同库的实例。 Agile Toolkit允许通常使用和控制器。因此,在ATK4对象彼此绑定时,您几乎负责CI中的数据管理。这是这些库中方法之间的核心差异。
CI中的图书馆:
$this->load->library('MyLib');
ATK4中的看起来像这样:
$this->api->add('MyLib');
通常的做法是放置
$this->owner->mylib=$this;
在您的图书馆内,因此您可以更轻松地访问它们。
如果不了解PHP开发的发生方式,您可能会感觉更好,在大多数情况下,它非常依赖于HTML模板。