(続)確認画面自動生成(FormExtHelper)
FormHelper継承して、freeze属性持たせりゃいいんじゃないかと...
http://github.com/oppara/cakephp_helper_formext/tree/master
使い方
$formの代わりに、$formExtを使用する。
- views/hoge/index.ctp:
<?php $formExt->freeze( $freeze ); // ** echo $formExt->create( 'Hoge', array( 'action' => 'index' ) ); echo $formExt->input( 'moge' ); echo $formExt->submit( ); echo $formExt->end(); ?>
<?php var $helpers = array( 'Html', 'FormExt', 'Javascript' ); function index() { if ( empty( $this->data ) ) { $this->set( 'freeze', false ); // #1 } else { $this->set( 'freeze', true ); // #2 } } ?>
#1の状態でのhtml
<form id="HogeIndexForm" method="post" action="/hoges"> <fieldset style="display:none;"><input type="hidden" name="_method" value="POST" /></fieldset> <input name="data[Hoge][moge]" type="text" value="" id="HogeMoge" /> <div class="submit"><input type="submit" value="Submit" /></div> </form>
#2の状態でのhtml
<form id="HogeIndexForm" method="post" action="/hoges"> <fieldset style="display:none;"><input type="hidden" name="_method" value="POST" /></fieldset> 入力された値<input type="hidden" name="data[Test][moge]" value="入力された値" id="HogeMoge" /> <div class="submit"><input type="submit" value="Submit" /></div> </form>
FormHelperとFormExtHelperの違い
- デフォルトで<div>でくくらない。labelをつけない。
<?php echo $formExt->input( 'foo' ); ?>
FormExtHelperが出力するhtml
<input name="data[Hoge][foo]" type="text" value="" id="HogeFoo" /><hr />
FormHelperが出力するhtml
<div class="input text"> <label for="HogeFoo">Foo</label> <input name="data[Hoge][foo]" type="text" value="" id="HogeFoo" /> </div>
FormExtHelperで、FormHelperと同じ動作をさせる
<?php echo $formExt->input( 'foo', array( 'div' => true, 'label' => 'Foo' ) ); ?>
- ラジオボタンは、<legend>等をつけない。
// 'label'=>true をつけないとラベルをつけてくれない... <?php echo $formExt->input( 'moo', array( 'type'=>'radio', 'options'=> array( '1'=>'radio1' ), 'label'=>true ) ); ?> // or <?php echo $formExt->radio( 'moo', array( '1'=>'radio1' ) ); ?>
FormExtHelperが出力するhtml
<input type="hidden" name="data[Hoge][moo]" id="HogeMoo_" value="" /> <input type="radio" name="data[Hoge][moo]" id="HogeMoo1" value="1" /><label for="HogeMoo1">radio1</label>
FormHelperが出力するhtml
<div class="input radio"> <fieldset><legend>Moo</legend> <input type="hidden" name="data[Hoge][moo]" id="HogeMoo_" value="" /> <input type="radio" name="data[Hoge][moo]" id="HogeMoo1" value="1" /><label for="HogeMoo1">radio1</label> </fieldset>
FormExtHelperで、FormHelperと同じ動作をさせる
<?php echo $formExt->input( 'moo', array( 'type'=>'radio', 'options'=> array( '1'=>'radio1' ), 'label'=>true, 'legend' => 'Moo' ) ); ?> or <?php echo $formExt->radio( 'moo', array( '1'=>'radio1' ), array( 'legend' => 'Moo' ) ); ?>
TODO
- ドキュメント
- file, year, month, dateTime, day, hour, minute, meridian対応
- checkboxのラベル値を取れるようにする。
- 複数選択(checkbox, select(multiple))された場合の表示方法(デリミタ等)を考える
- 力技、大杉
- testを書く(順番逆)
- キャッシュの対応
- gitの使い方を覚える
- 自動生成といえるのか、少し疑問