如何将数据库表与 ATK 中的模型关联起来?

发布于 2024-12-02 09:16:34 字数 448 浏览 0 评论 0原文

我有遗留代码,它在上下文中存储临时数据。我想使用以下模型将其存储在数据库中:

class Model_MyModel extends Model_Table {
    function init(){
        parent::init();
        $this->addField('myString');
    }   
}

我可以从旧控制器中访问数据,因此:

class Controller_LegacyController extends Controller {
    $myString = $this->api->recall("legacyString");
}

但我看不到如何将所有内容连接在一起(所有示例都使用表单链接到数据库)

谢谢你的帮助,

格雷格。

I have legacy code which stores temporary data in the context. I would like to store this in the DB using the following model:

class Model_MyModel extends Model_Table {
    function init(){
        parent::init();
        $this->addField('myString');
    }   
}

I can access the data from within the legacy Controller thus:

class Controller_LegacyController extends Controller {
    $myString = $this->api->recall("legacyString");
}

But I can't see how to tie everything together (all the examples use a Form to link to the DB)

Thanks for your help,

Greg.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

玻璃人 2024-12-09 09:16:34

我发现你的问题和代码有点令人困惑,但我会尽力提供帮助。

  1. 您不需要控制器即可使用您的模型。当调用 $form->setModel() 时,它会自动为您选择正确的控制器。

    $page->add('MVCForm')->setModel('MyModel');

  2. 当你想将数据发送回数据库时,你应该调用$form->update()。您可以使用一个视图,它将为您执行此操作: 表单并保存

    $page->add('FormAndSave')->setModel('MyModel'); // 也会将数据保存回数据库。

  3. 如果从数据库加载数据,则需要在模型上调用loadData()。您的最终代码可能如下所示(stickyGET 确保它在表单提交处理程序中传递 get 参数):

    $this->api->stickyGET('id');
    $page->add('FormAndSave')->setModel('MyModel')->loadData($_GET['id']);

  4. recall() 方法处理会话,因此看起来好像您正在从会话中读取数据。如果您打算这样做并且希望在表单中查看会话变量的值,那么这将做到这一点:

    $form->set('myfield',$this->api->recall('legacyString'));

我希望这会给您一些如何继续的提示。查看更多示例,http://agiletoolkit.org 上有很多示例

I find your question and code a bit confusing, but I'll try to help.

  1. You don't need controller to be able to use your model. When calling $form->setModel() it automatically pick the right controller for you.

    $page->add('MVCForm')->setModel('MyModel');

  2. When you want to send data back into data-base, you should call $form->update(). There is a View you can use, which will do that for you called: FormAndSave

    $page->add('FormAndSave')->setModel('MyModel'); // will also save data back to database.

  3. If you load data from database, you need to call loadData() on the model. Your final code might look like this (stickyGET ensures that it pass get argument inside form submit handler):

    $this->api->stickyGET('id');
    $page->add('FormAndSave')->setModel('MyModel')->loadData($_GET['id']);

  4. method recall() deals with sessions, so it seems as if you are reading data from the session. If you intend that and you want to see value of your session variable in the form, then this will do it:

    $form->set('myfield',$this->api->recall('legacyString'));

I hope this will give you some hints on how to continue. Look through more samples, there are lots of them on http://agiletoolkit.org

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文