0

_confirmation フィールドが正しくない場合に、Laravel に正しいフィールドを強調表示させる方法が見つかりません。

Bootstrap レイアウトを使用すると、次のようにフォームに email と email_confirmation フィールドがあります。

<div class="control-group {{$errors->has('email') ? 'error' : ''}}">
    {{ Form::label('email', 'Email', array('class' => 'control-label'))}}
    <div class="controls">
        {{ Form::email('email', Input::old('email'));}}
        {{ $errors->first('email', Form::block_help(':message')) }}
    </div>
</div>
<div class="control-group {{$errors->has('email_confirmation') ? 'error' : ''}}">
    {{ Form::label('email_confirmation', 'Confirm Email', array('class' => 'control-label'))}}
    <div class="controls">
        {{ Form::email('email_confirmation', Input::old('email_confirmation'));}}
        {{ $errors->first('email_confirmation', Form::block_help(':message')) }}
    </div>
</div>

したがって、ユーザーが無効な電子メール アドレスを入力すると、「電子メール」フィールドにエラーが添付され、正しいラベル/フィールドが強調表示されます。

しかし、ユーザーが最初のフィールドに有効な/正しい電子メール アドレスを入力したが、確認が間違っていた場合、返されるエラーは、email_confirmed フィールドではなく「email」フィールドに対するものです。

エラーが実際には email_confirmation フィールドにあるときに、電子メール フィールドが強調表示されると、私には奇妙に見えます。

このstackoverflowの質問から理解できる限り、おそらく次のようなことができます

{{$errors->first('email', ':message') == 'Please confirm your email address correctly.' ? 'error' : ''}}

これは機能しますが、問題は、多言語サイトを実行しているため、返される :message が多くの可能性の 1 つになることです。

:message を各言語のメッセージの配列と比較する関数を作成できると思いますが、もっと簡単な方法があるかどうかを調べてみようと思いました。

乾杯!

4

2 に答える 2

2

これは、タイトル フィールドが空の場合にインライン エラーを表示する方法です。

<div class="form-group @if ($errors->has('title')) has-error @endif">
    {{ Form::label('title', 'Title') }}
    {{ Form::text('title', null, array('class' => 'form-control')) }}
    @if ($errors->has('title')) <p class="help-block">{{ $errors->first('title') }}</p> @endif
</div>

そして私の検証ルール:

public static $rules = array(
    'title' => 'required',
);

Laravel 4 と Bootstrap 3 を使用しています。

于 2014-09-29T07:20:04.593 に答える
-2

または、すべてのエラーメッセージをどこかに印刷することもできます

 $messages = $validator->messages();
     echo '<ul>';
     foreach ($messages->all() as $message)
        {
            echo '<li>'.$message.'</li>';
        }
     echo '</ul>';
于 2013-12-12T09:59:47.007 に答える