2011-01-21 1 views
0

関数からユーザーにエラーを返す標準的な方法は何ですか?行うための標準的な方法であるものだから、関数からユーザーにエラーを返す標準的な方法は何ですか?

if(register()) {blah blah blah} else { put errors under inputs} 

:(Eメール無効、最大文字はなど、exeeded)

function register($name, $email) { 
    if(!$name) { 
      $registration_errors = 'name empty,'; 
    } 

    if(!email) { 
      $registration_errors = $errors . 'email empty,'; 
    } 

    if($registration_errors) { 
      return $registration_errors; 
    } 
    else { 
     register stuff........ 
     return true; 
    } 
} 

今の問題は、あなたのような何かを傾けるように、それは常にtrueを返すということですこの?

答えて

0
<?php 
// in your register function: 
$registration_errors = array(); 
if (!$name) { 
    $registration_errors['name'] = 'Name is required.'; 
} 
// etc. 
?> 

<!-- in your phtml: --> 
<?php if (array_key_exists('name', $registration_errors) echo $registration_errors['name'];?> 
<label for="name">Name</label> 
<input id="name" name="name" type="text" value="<?php echo $name; ?>" /> 
0

使用この

function register 
{ 
.. 
else 
{ 
return array('error' => $errorwhichyoufound); 
} 
.... 
} 
$result = register(); 
if((array_key_exists('error', $result))) 
{ 

} 
else 
{ 
} 

のようなもの、あなたも、個々のエラーをチェックすることができますこの方法。

0

これを行うにはさまざまな方法がありますが、そのうちのいくつかを「標準」とみなすことさえできます。エラーコードを含む配列を返すことができます(上記の答えとして)。オブジェクトプロパティとしてエラーを格納することができます(オブジェクトメソッドとして "register"を呼び出す必要があります)。エラーをグローバル変数に格納するか、登録された場所にエラーを入れてください。変数参照を渡して、変数値をエラーに設定することができます。あなたは戻りロジックを逆転させることができるので、文字列は偽となり、ゼロは真の値になります。エラーが発生する可能性があります。あなたは例外をスローすることができます。

ここで実際に問題となるのは、「レジスタ」機能はある機能を実行することになっていて、面白いことが起こった場合に備えて入力をサニタイズするように求めていることです。だから本当に$ nameと$ emailを浄化する必要があるのであれば、登録する前にその妥当性チェックをしないのはなぜですか?あなたは何らかの種類のエラーパスを必要とするでしょうし、場合によっては状況に応じていくつかの異なるエラーメッセージを必要とします。最終的に登録を呼び出す準備ができたら、ビジネスルールに空でない電子メールアドレスが必要なためではなく、独自の理由で成功または失敗する必要があります。

+0

これらは良いと思います。関数の外側に検証を置く方が良いのでしょうか?モバイル版を作成したり、別の場所からその機能を呼び出して有効性を確認したりすると、より簡単に思えるからです。 – user583951

+0

このように考える:登録「プロセス」と登録機能があります。検証はプロセスの一部です。それは本当にモバイル版と同じになるだろうか?知りません。おそらく、あなたのモバイル検証コードは、ヘッダやチェックサム、ステータスフラグのような余分なものをチェックする必要があるかもしれません。 –

+0

"グローバル変数にエラーを格納することができます"。 –

関連する問題