2011年03月09日

配列の最初だけ空は許さないよvalidate

お願いします♪いいねとかつぶやいたりして下さい
 

view
2個目以降はエラーが出ないように false で制御
<?=$form->create(null,array('url' => $_SERVER['REQUEST_URI']));?>

テーマ (JSでどんどんフォームを増やしていく)<br />
<?=$form->input('Theme.body.0',array('type' => 'text' , 'class' => 'span-20' , 'error' => '最低一つは入力して下さい'));?><br />
<br />

テーマ (JSでどんどんフォームを増やしていく)<br />
<?=$form->input('Theme.body.1',array('type' => 'text' , 'class' => 'span-20' , 'error' => false));?><br />


<?=$form->input('Campaign.user_id',array('type' => 'hidden' , 'value' => u('id')));?>
<?=$form->submit('新規登録');?>
<?=$form->end();?>


model
class Theme extends AppModel {
    
    var $validate = array(
        'body' => array(
            'rule' => array(
                'arrayFirstNotEmpty'
            )
        )
    );
    
    function arrayFirstNotEmpty($data)
    {
        return (preg_match('/[^\s]+/m',array_shift($data[key($data)])));
    }

}


コントローラーはいつもどおりで。
これで、 body の 0 が 空の場合のみ、エラーを出す。

一応コントローラーも。
class CampaignsController extends AppController
{	
    function add()
    {
        $this->data['Theme']['body'] = array_filter($this->data['Theme']['body'], 'strlen');
       
        if($this->data){
            $this->Campaign->bindModel(array('hasMany' => array('Theme')));
            $this->Campaign->set($this->data);
            if($this->Campaign->saveAll($this->data,array('validate'=>'only'))){
                echo 'OK';
            } else {
                echo 'NG';
            }
        }
    }
    
    
}


関連するタグ: PHP cakephp
あなたにとって有用な記事でしたか?是非ブックマークしておくことをおすすめします。
 




ライブラリを配布しちゃったり
webデザイン
Fireworks
HTMLコーディング
CSS
Dreamweaver
携帯サイト
webプログラム
PHP
正規表現
cakephp
MYSQL
javascript
webマーケティング
adwords
analytics
windows7
ショートカットキー
おすすめ情報
サイト
facebook
ライブラリ
配布
アプリ
iphone
ipad
サーバー
さくらサーバー
全ての記事を読む




トップ - 最新の記事一覧 - お問い合わせ