« テーブル定義書の自動生成 その2 | メイン | テーブル定義書の自動生成 その4 »

ethna

テーブル定義書の自動生成 その3

 仕様書が無くソースコードだけが残るのが最悪。せめて最終的なソースコードを元に仕様書のベースを生成したい。
ethna にはない description 要素を追加。
APPID_ActionForm extends Ethna_ActionForm{
    var $form_template = array(
        'fieldName'    => array(
            'name'     => '列に対するWEBでの表示名',
            'required' => false,
            'form_type'=> FORM_TYPE_RADIO,
            'type'     => VAR_TYPE_INT,
            'option'   => array(
                '1'=>'A',
                '2'=>'B',
            ),
            'description'=>    array(
                '2択',
                'コードで格納 etc...',
            ),
        ),
            ~
    );
}
このままでは「プラグインがない」とワーニング。
app/plugin/APPID_Plugin_Validator_Description.php を作成。
class APPID_Plugin_Validator_Description extends Ethna_Plugin_Validator{
    var $accept_array = true;

    function &validate( $name, $var, $params ){
        return $this->ok();    ///    説明なのでなにもしない
    /// return $this->error('エラーだよ', E_APP_FORM_INVALIDVALUE);
    }
}
例えば↓このように出力すればそのままエクセルに貼り付けて・・・
<table border=1>
    <caption>tableName</caption>
    <tr>
        <th>項番</th>
        <th>列名</th>
        <th>属性名</th>
        <th>データ型</th>
        <th>制約</th>
        <th>カラム説明</th>
    </tr>
{foreach from=$app.tableName item=p key=c name=x}
    <tr>
        <td align=right>{$c|default: }</td>
        <td>{$formDef[$p.Field].name|default:&nbsp;}</td>
        <td>{$p.Field|default:&nbsp;}</td>
        <td>{$p.Type|default:&nbsp;}</td>
        <td>
            {if 'PRI'==$p.Key}PRIMARY KEY{/if}
            {if 'auto_increment'==$p.Extra}AUTO_INCREMENT{/if}
            {if 'NO'==$p.Null}NOT NULL{else} {/if}
            {if ''!=$p.Default}DEFAULT {$p.Default}{else} {/if}
        </td>
        <td>
            {if $formDef[$p.Field].option|is_array}
                {foreach from=$formDef[$p.Field].option item=v key=k name=y}<div>{$k}:{$v}</div>{/foreach}
            {/if}
            {if $formDef[$p.Field].description|is_array}
                {foreach from=$formDef[$p.Field].description item=description}<div>{$description}</div>{/foreach}
            {else if !$formDef[$p.Field].description|empty}
                <div>{$formDef[$p.Field].description}</div>
            {/if}
        </td>
    </tr>
{/foreach}
<table>
このままでもいいかも。

トラックバック

このエントリーのトラックバックURL:
https://www.remix.asia/cgi/mt/mt-tb.cgi/6551

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)