3

フォーム検証に尊重検証を使用しています

$app->post('/', function () use ($app) {

    $validator  = v::key('name', v::string()->notEmpty())
                    ->key('email', v::email()->notEmpty())
                    ->key('message', v::string()->notEmpty());

    $errors = array();

    try{
        $validator->assert($_POST);
    } catch (\InvalidArgumentException $e) {
        $errors = $e->findMessages(array(
            'notEmpty'     => '{{name}} is required',
            'email'        => '{{name}} must be a valid email'
        ));
    }

    if ($validator->validate($_POST)) {
        // do stuff

        $app->redirect('/');

    } else {

        $app->render('index.php', array('field_errors' => array_values($errors)));

    }
});

ループすると、次のarray_values($errors)ようになります。

"" is required
email must be a valid email

次のようなものが必要です:

name is required
email must be a valid email
message is required

Respect Validationを使用してどのように行うべきか

4

2 に答える 2

4

メッセージはありますが、findMessagesルックアップは と を検索してnotEmptyいますemail

実際に持っているものは次の$errorsとおりです。

Array
(
    [0] => 
    [1] => email must be a valid email
)

$errors[0]notEmpty見つからなかった検索です。が見つかった
$errors[1]ルックアップです。email

問題のフィールドを探すように変更すると、次のようにnameなりemailますmessage

    $errors = $e->findMessages(array(
        'name'         => '{{name}} is required',
        'email'        => '{{name}} must be a valid email',
        'message'      => '{{name}} is required'
    ));

次に、目的の結果が得られます。

Array
(
    [0] => name is required
    [1] => email must be a valid email
    [2] => message is required
)

たまたまこれに遭遇したため、応答が遅れて申し訳ありません。代わりに、公式のRespect\Validation イシュー トラッカーにサポートを依頼すると、はるかに迅速な結果が得られます。これは、経験した問題を回避するための改善のための提案の理想的なプラットフォームでもあります。リスペクトのチームは熱心でフレンドリーで、いつでも喜んでお手伝いします。

nJoy!

于 2013-01-08T17:44:07.467 に答える
0

この上の2つの答えは近いと思います。メッセージ、名前、電子メールを含むエラー メッセージ コード ブロックを追加するだけです。

 $errors = $e->findMessages(array(
    'notEmpty'     => '{{name}} is required',
    'email'        => '{{email}} must be a valid email',
    'notEmpty'     => '{{message}} please enter a message'
)); 
于 2013-03-13T01:42:31.623 に答える