MySQL の DESC 命令で、テーブル定義設計書を ethna で出力。当然MySQL依存。
class APPID_TABLEManager extends Ethna_AppManager{ function &getMeta( $column=null ){ $ethnadb =& $this->backend->getDB(); $peardb =& $ethnadb->db; $statment = "DESC tableName {$column}"; $resultSet = $peardb->getAll( $statment, null, DB_FETCHMODE_ASSOC ); if( PEAR::isError( $resultSet ) ){ $message = $resultSet->getCode().':'.$resultSet->getMessage(); Ethna::raiseWarning( $message ); } return $resultSet; } }あとは、view で、
$manager =& $this->backend->getManager( 'tableName' ); $this->action_form->setApp( 'tableName', $manager->getMeta() );とすれば、template で
<table border=1> <caption>tableName</caption> <tr> <th>項番</th> <th>列名</th> <th>データ型</th> <th>制約</th> </tr> {foreach from=$app.tableName item=p key=c name=x} <tr> <td align=right>{$c}</td> <td align=left>{$p.Field}</td> <td align=left>{$p.Type}</td> <td align=left> {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> </tr> {/foreach} <table>かなりベタ。