2

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

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

因此,我可以从旧版 Controller 中访问数据:

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

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

谢谢你的帮助,

格雷格。

4

1 回答 1

2

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

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

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

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

    $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上有很多示例

于 2011-09-01T16:06:16.747 回答