1

CakePHPに入力フィールドの依存関係を処理させることは可能ですか?

echo $this->Form->checkbox('foo');
echo $this->Form->input('bar'); //is hidden initially

そして、fooがチェックされている場合にのみ、バーを表示して検証しますか?

4

5 に答える 5

3

必要な jQuery (実際には実際の名前を入力していないため、コードのクラスを更新する必要があります)。最初は、CSS でバーを非表示にする必要があります。

(function(){

    $('#foo').on('change', function() {
        if($(this).is(':checked')) {
            $('#bar').fadeIn();
        }
    });
});
于 2013-02-13T12:46:10.617 に答える
1

これを行う最善の方法は、javascript を使用することです。CakePHP はサイド サーバー用の PHP コードを生成するだけであることを思い出してください。

<script >
$(document).ready(function(){
$('#MyModelFoo').change(function(){
 if($(this).is(':checked')) {
        $('#MyModelBar').fadeIn();
    }
});
</script>
<?php
echo $this->Form->create('MyModel');
echo $this->Form->checkbox('foo');
echo $this->Form->input('bar'); //is hidden initially
echo $this->Form->end();
?>
于 2013-02-13T12:57:48.757 に答える
0

JavaScriptを使用します。CakePHPが作成されたサーバー側のプログラミング言語では、入力フィールドを動的に表示/非表示にすることはできません。

于 2013-02-13T13:01:29.003 に答える
0

他の人は、フィールドを表示/非表示にするために必要な jQuery を投稿しています。CakePHP でそれを検証する方法は次のとおりです。

AppModel では:

public function requiredIfChecked($check, $associatedField) {

    $value = array_pop($check);

    if ($this->data[$this->alias][$associatedField] && empty($value)) {

        return false;

    }
    else {

        return true;

    }

}

検証配列で:

public $validate = array( 
    'bar'=>array(
        'required_if_checked'=>array(
            'rule'=>array('requiredIfChecked', 'foo'),
            'message'=>'cannot be blank if foo is checked'
        )
    )
);
于 2013-02-13T15:08:47.797 に答える
0

はい、そうですが、そのためにはクライアント側のプログラミングを使用する必要があります.phpはそのようなshow hide..jを実行できないため、クエリが最適です.cakephpには、そのような依存関係をチェックする機能がすでにあり、私が間違っていなければデフォルトでは、cakephp はプロトタイプ js を使用するため、observField と呼ばれます。

多くのための

于 2013-02-13T10:27:36.363 に答える