2

コンテキストに一時データを格納するレガシー コードがあります。次のモデルを使用して、これをDBに保存したいと思います。

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

レガシーコントローラー内からデータにアクセスできるため、次のようになります。

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

しかし、すべてを結び付ける方法がわかりません(すべての例では、フォームを使用してDBにリンクしています)

ご協力いただきありがとうございます、

グレッグ。

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 に答える