0

コントローラーで、登録フォームのフィールドの入力を検証しています。必須フィールド、電子メールの検証などの簡単な検証を行っています。

送信が成功したら、ユーザーの作成を試みます (私は Sentry パッケージを使用しています)。このプロセスからエラーをキャッチし、それらを検証エラーに追加して、特定のフィールドに添付できるようにしたいと考えています。例: メールが既に存在する場合、「メール フィールド」にエラーを挿入し、カスタム エラー メッセージを表示します。

(疑似コード)のような、これを行う簡単な方法があることを望んでいました:

$validation->error()->insert_error($field_name, $message)

これを行う簡単な方法はありますか?

4

1 に答える 1

0

ネイティブ Validation クラスはそれを許可しません。

しかし、私はあなたの問題に対する2つの解決策を見ることができます.

最初の解決策(テストしていません。これはアイデアを得るためのものです):

<?php
class CustomFieldError {
    function rule_which_always_fail($val) {
        return false;
    }
}
function insert_error($validation, $field_name, $error) {
    $validation->field($field_name)->->add_rule(array('CustomFieldError', 'rule_which_always_fail'))->set_message($error);
}

// You need to do that before $validation->run();
if ($duplicate_email) {
    insert_error($validation, 'email', 'Duplicate email');
}

2 番目の解決策: \Fuel\Core\Validation クラスを独自のものに置き換えて拡張します。このようにして、insert_error() メソッドを Validation クラス内に直接追加し、次のエラーを追加できます。$this->errors['field_name'] = 'Error message';

[編集] 2 番目のソリューションを使用したい場合は、必ず Github トラッカーで機能リクエストを送信してください :)

于 2012-04-24T08:16:31.610 に答える