Forum Replies Created

Viewing 2 replies - 1 through 2 (of 2 total)
  • Thread Starter undo_master

    (@undo_master)

    下記をfunctions.phpに記述することにより何とかその場しのぎで解決しました。
    「お問い合わせ内容」というname属性のテキストボックスにバリデーションルールを適用していることにまりますので、当然メッセージは「お問い合わせ内容」のテキストボックスの下に出ることになります。

    require_once(WP_PLUGIN_DIR . '/mw-wp-form/classes/models/class.abstract-validation-rule.php');
    class MW_Validation_Rule_noSession extends MW_WP_Form_Abstract_Validation_Rule {
    
    	protected $name = 'nosession'; //名前は自由につけてください。
    
    	protected $Data;
    
    	public function __construct() {
    		if ( !$this->getName() ) {
    			exit( 'MW_WP_Form_Abstract_Validation_Rule::$name must override.' );
    		}
    	}
    
    	public function set_Data( MW_WP_Form_Data $Data ) {
    		$this->Data = $Data;
    	}
    
    	public function getName() {
    		return $this->name;
    	}
    
    	/* 下記のrule関数をいじることになります。プラグインのフォルダに入ってるnoempty.phpなどを参考にしましょう。 */
    	public function rule( $key, array $options = array() ) {
    		if ( empty( $_SESSION['xxxx'] ) ) {
    			$defaults = array(
    				'message' => __( 'Please enter.', 'mw-wp-form' )
    			);
    			$options = array_merge( $defaults, $options );
    			return $options['message'];
    		}
    	}
    
    	public function admin( $key, $value ) {
    		?>
    		<label><input type="checkbox" <?php checked( $value[$this->getName()], 1 ); ?> name="<?php echo MWF_Config::NAME; ?>[validation][<?php echo $key; ?>][<?php echo esc_attr( $this->getName() ); ?>]" value="1" /><?php esc_html_e( 'Session', 'mw-wp-form' ); ?></label>
    		<?php
    	}
    }
    
    function my_validation_rule($validation_rules,$key) {
        $validation_rules['nosession'] = new MW_Validation_Rule_noSession($key);
        return $validation_rules;
    }
    add_filter( 'mwform_validation_rules', 'my_validation_rule',10,2 );
    
    function my_validation( $Validation, $data, $Data ) {
       $Validation->set_rule( 'お問い合わせ内容', 'nosession',array(
            'message' => 'sessionがありません' //メッセージは自由に決めましょう。
        ) );
        return $Validation;
    }
    add_filter( 'mwform_validation_mw-wp-form-xxx', 'my_validation', 10, 3 );

    作者様、素晴らしいプラグインをありがとうございます。

    Thread Starter undo_master

    (@undo_master)

    class.validation.phpを下記のように書き換えるやり方だと、完了画面でフォームが消えないバグが発生してしまいました。。。

    public function flag_a() {
    
    $flagA = false;
    
    if(isset($_SESSION['aaaa'])){
    $flagA = true;
    break;
    }
    return $flagA;
    }
    
    protected function is_valid() {
    $errors = $this->Error->get_errors();
    if ( empty( $errors )&& $this->flag_a() ) {
    return true;
    } else {
    return false;
    }
    }

Viewing 2 replies - 1 through 2 (of 2 total)