Skip to main content.

Monday, January 08, 2007

Ethnaの導入(その4)アプリケーションオブジェクトの利用その2

Ethnaの導入(その4)です。前回の続きです。前回は、EthnaのO/RマッピングクラスであるEthna_AppObjectクラスを使って、MySQLのテーブルと連携をさせて画面からデータを追加するところまで実装してみました。今回は、一覧表示から、編集、削除と追加と一通り実装してみました。以下のような実行画面になります。(※Ethnaのバージョンは、2.3.0です。)日本語のデータは自サーバのEUC環境では正しく扱われることを確認しました。

実行画面


以下、ポイントと思われる部分の説明と各スクリプトです。プロジェクト全体は、こちらからダウンロードしてご覧下さい。

アプリケーションマネージャでの処理
前回は、追加処理のみを実装しましたが、今回は一覧、更新、削除と実装しました。一覧では、Ethna_AppManagerクラスのgetObjectPropListメソッドを使用して取得しています。(※詳細は、マニュアルのこちらを参照して下さい。)その他の処理は、Ethna_AppObjectクラスadd、update、removeの各メソッドを使用しています。以下はそのスクリプトです。

ビュークラスでの処理
実際の一覧の取得は、ビュークラスのpreforward()で行っています。以下がそのスクリプトです。
<?php
/**
 *  List.php
 *
 *  @author     {$author}
 *  @package    Appobj
 *  @version    $Id: skel.view.php,v 1.8 2006/11/06 14:31:24 cocoitiban Exp $
 */

/**
 *  listビューの実装
 *
 *  @author     {$author}
 *  @access     public
 *  @package    Appobj
 */
class Appobj_View_List extends Appobj_ViewClass
{
    /**
     *  遷移前処理
     *
     *  @access public
     */
    function preforward()
    {
        //一覧の取得、設定
        $memberManager =& $this->backend->getManager('member');
        $this->af->setApp('members', $memberManager->getList());
    }
}
?>

以下は、一覧表示のテンプレートです。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
    </head>
    <body>
        <h2>Member - List</h2><hr>
    
        <table border="0"
            {if count($errors)}
                <ul>{foreach from=$errors item=error}
                    <li>{$error}</li>
                {/foreach}</ul>
            {/if}>
        </table>
        
        <dl>
            {foreach from=$app.members item=member}
            <dt>ID:{$member.memid}
                <a href="?action_edit=true&memid={$member.memid}">Edit</a> 
                <a href="?action_delete=true&memid={$member.memid}">Delete</a></dt>
            <dd>
                Name:{$member.name}<br>
                Email:{$member.email}<br>
            </dd><br>
            {/foreach}

        <br><a href="?action_input=true">Add new data</a>

        </dl>
    </body>
</html>

その他の処理は、各アクションからアプリケーションマネージャを経由して行っています。お手数ですが、こちらからダウンロードしてご覧下さい。(※入力チェック等の細かい処理は実装出来ていませんのでご了承下さい。)

関連リンク
Ethna
データベースアクセス(アプリケーションオブジェクトを使わない場合)

Webプログラミング関連記事