1

複数のフィールドを 1 か所で検証したい。したがって、次のように4つのフィールドをフォームに含めました

  1. facebook_link
  2. twitter_link
  3. google_plus_link
  4. linked_in_link

ユーザーは少なくとも上記のいずれかのフィールドを入力します。ユーザーがフォームにリンクのいずれかを入力するなどの解決策を得るのを手伝ってください。

4

2 に答える 2

4

独自の検証方法を追加できます。

public $validate = array(
    'facebook_link' => array(
        'rule'    => array('validateLink'),
        'message' => '...'
    ),
    'twitter_link' => array(
        'rule'    => array('validateLink'),
        'message' => '...'
    ),
    'google_plus_link' => array(
        'rule'    => array('validateLink'),
        'message' => '...'
    ),
    'linked_in_link' => array(
        'rule'    => array('validateLink'),
        'message' => '...'
    ),
);

public function validateLink($link) {
    $allFieldsAreEmpty = (
        empty($this->data[$this->alias]['facebook_link']) &&
        empty($this->data[$this->alias]['twitter_link']) &&
        empty($this->data[$this->alias]['google_plus_link']) &&
        empty($this->data[$this->alias]['linked_in_link'])
    );

    return !$allFieldsAreEmpty;
}
于 2013-01-19T12:24:56.543 に答える
0

これがうまくいくことを願っています。

public $validate = array(
    'facebook_link' => array(
        'rule'    => array('customValidation','facebook_link'),
        'message' => 'Please enter facebook link.'
    ),
    'twitter_link' => array(
        'rule'    => array('customValidation','twitter_link'),
         'message' => 'Please enter twitter link.'
    ),
    'google_plus_link' => array(
        'rule'    => array('customValidation'),
         'message' => 'Please enter google plus link.'
    ),
    'linked_in_link' => array(
        'rule'    => array('customValidation'),
         'message' => 'Please enter linkedin link.'
    ),
);

function customValidation($data , $filed) {
    if(empty($data[$filed])) {
        return false;
    }
    return true;
}
于 2016-05-26T08:27:04.507 に答える