2011-11-14 26 views
1

私のフォームに携帯電話と電話のフィールドがあります。ユーザーがフィールドのいずれか、または両方を入力したいが、どちらも入力しないでください。PHPのカスタム検証Codeigniter - 2つのフィールドの1つが必要

私は他の言語でそれを行う方法を見てきましたが、Codeigniterでそれを行う方法についていくつかアドバイスがありますか?

+0

これまでの検証方法は? – bensiu

+0

CIフォームの検証 –

+0

コールバックを使用して携帯電話と携帯電話を比較する – bensiu

答えて

-2

ただ、クライアント側でのJSの検証を行うと、サーバー側のPHPの検証(またはCIのフォームヘルパーを使用)...とにかく、PHPは次のよ​​うになります。

if ($_POST['cellphone'] == '' OR $_POST['phone' == '') { 
// do stuff like make an notification, alert, etc... and take users back to the form 
} 
+0

設定フォルダにすべての検証の配列を作成しました。このタイプの検証ではどうすればよいですか。 @Shomz –

+0

私たちはコアphpでないルールが必要です –

+0

@Darshanambaliya別の質問をすることができます。 – Shomz

7

あなたが行うことができます

 
$this->form_validation->set_rules('phone', 'Your validation message.', 'callback__phone_check'); 

と機能します:それとして

 
function _phone_check() { 
    //check for phone and cellphone field. 
    //make sure one field is not empty and return accordingly 
} 

希望

を支援
+0

どこでこれを行う必要がありますか?見て、コントローラ? –

+0

@ jQuery.PHP.Magento.comあなたのコントローラにあるはずです!詳細はこちらをご覧ください:: https://ellislab.com/codeIgniter/user-guide/libraries/form_validation.html#callbacks –

4

クイックコードスニペットをあなたのやり方で投げたかっただけです。私はこれを達成したいと思って、この質問は私が私の検索をしたときにGoogleの最初のエントリの一つでした。私は他の回答からインスピレーションを取り、ここで私がやったことだこれ(メーリングリスト)私の仕事:これは非常に簡単な検証機能があるので、私は私はする必要はありません、エラーメッセージをあらかじめ設定

$this->form_validation->set_message('contactVerify', 'Either Phone or Email is required'); 
... 
$this->form_validation->set_rules('phone', 'Phone', 'trim|callback_contactVerify[email]|xss_clean'); 
$this->form_validation->set_rules('email', 'Email', 'trim|callback_contactVerify[phone]|valid_email|xss_clean'); 
... 
public function contactVerify($contact, $otherField) { 
    return ($contact != '' || $this->input->post($otherField) != ''); 
} 

それを検証機能の中に設定してください。私は大括弧で2番目の引数としてチェックしたい他のフィールドを渡します。

希望すると便利です。

+0

悲しいことに、私はこれがもう動作しないと思います。私はルールに "必須"がない場合、他のルールはチェックされていないと思います(効率性のために私は推測します)。 – twistedpixel

関連する問題