サポート » プラグイン » MW WP Form の mwform_validation_mw-wpフックについての質問

  • 解決済 t.maruya

    (@tmaruya)


    MW WP Formを使用して問合せフォームの作成をしています。
    とても実用的と感じており、作者の方に大変感謝申し上げます。

    mwform_validation_mw-wpフックについてですが、functions.phpに処理を記述するにあたり、
    たのフックのように「$data」でフィールドの値について取得する方法は何かあるでしょうか?

    例えば、チェックボックスがチェックされたとき、特定のテキストフィールドを入力必須とし、
    チェックされていなければ、特定のテキストフィールドは入力必須としない、というようなケースです。

    よろしくお願い致します。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • mwform_validation_mw-wp-form-xxxのフックも第2引数で$dataが取得できます。
    http://plugins.2inc.org/mw-wp-form/manual/filter-hook/mwform_validation/

    下記のような感じでできませんか?

    function my_validation_rule( $Validation, $data ) {
        if ( $data['check'] === 'hoge' ) {
            $Validation->setRule( 'fuga', 'noEmpty' );
        }
        return $Validation;
    }
    add_filter( 'mwform_validation_mw-wp-form-xxx', 'my_validation_rule', 10, 2 );

    ご回答、ありがとうございます。
    テキストボックスの場合では可能でしたが、チェックボックスで特定の選択肢が選択された場合、というような条件での記述方法がわかりませんでした。
    [mwform_checkbox name=”アンケート” children=”A,B,C,D”]というチェックボックスに対して、”C”が選ばれたときにvalidationを追加する、というようなケースです。
    よろしくお願い致します。
    それからmwform_validation_mw-wp-form-xxxのフックの中で、$dataの値を取得して、エラーメッセージにセットしようとしたところ、上手くいきませんでした。このような処理はできないのでしょうか?
    $v->setRule( ‘その他1’, ‘noEmpty’, array( ‘message’ => $data[‘check’]));
    というような書き方です。
    ご回答、よろしくお願い致します。

    こんな感じでどうでしょう?

    function my_validation_rule( $Validation, $data ) {
        if ( isset( $data['アンケート']['data'] ) && is_array( $data['アンケート']['data'] ) ) {
            if ( in_array( 'C', $data['アンケート']['data'] ) ) {
                $Validation->setRule( 'その他1', 'noEmpty', array(
                    'message' => implode( ', ', $data['アンケート']['data'] ),
                ) );
            }
        }
        return $Validation;
    }
    add_filter( 'mwform_validation_mw-wp-form-xxx', 'my_validation_rule', 10, 2 );

    注意点として、フックで「その他1」に対して必須チェックを有効にする場合、管理画面では「その他1」に対して必須チェックを有効にしてはいけません。

    回答ありがとうございます。
    どうも$data自体の取得ができていないようです。
    コーディングの方法はわかりました。
    しかし、上記を参考にやってみましたが上手くいきません。
    以下のようなフィルターフックを設定してみました。

    function mwform_validation_10049( $v, $data ) {
    	if ( isset($data)){
    		$v->setRule( 'テキスト', 'noEmpty', array('message' => 'True'));
    	} else {
    		$v->setRule( 'テキスト', 'noEmpty', array('message' => 'false'));
    	}
    	return $v;
    }
    add_filter( 'mwform_validation_mw-wp-form-10049', 'mwform_validation_10049' );

    結果は「false」が表示されます。
    MW WP Form のバージョンは最新1.4.0です。
    ご回答、よろしくお願い致します。

    上のコメントは間違いです。
    すいません、add_filterが間違っているという初歩的なミスでした。
    動作確認中です。

    無事希望通りのバリデーションが作成できました。
    アドバイス、ありがとうございました。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「MW WP Form の mwform_validation_mw-wpフックについての質問」には新たに返信することはできません。