在laravel 5.3中的一页中注册和登录表单

时间:2016-11-12 09:16:34

标签: php forms laravel error-handling

我正在创建一个在一个页面中同时注册和登录的页面。
我的代码看起来像这样

<div class="w3-display-container w3-white">
    <div style="white-space:nowrap;" class="container">
        <h2>Already have an account?</h2><hr>
        <div class="col-md-8 col-md-offset-2 w3-margin-bottom">
            {!! Form::open(['route' => 'login', 'method' => 'POST']) !!}
                <div class="form-group {{ $errors->has('email') ? 'has-error has-feedback' : '' }}">
                    {{ Form::label('email', 'Enter Your Email...', ['class' => 'control-label']) }}
                    {{ Form::email('email', null, ['class' => 'form-control', 'placeholder' => 'email...', 'value' => old('email')]) }}
                    <span class="{{ $errors->has('email') ? 'glyphicon glyphicon-remove form-control-feedback' : '' }}"></span>
                </div>
                <div class="form-group {{ $errors->has('password') ? 'has-error has-feedback' : '' }}">
                    {{ Form::label('password', 'Enter Your Password...', ['class' => 'control-label']) }}
                    {{ Form::password('password', ['class' => 'form-control', 'placeholder' => 'password...']) }}
                    <span class="{{ $errors->has('password') ? 'glyphicon glyphicon-remove form-control-feedback' : '' }}"></span>
                </div>
                {{ Form::submit('Log in', ['class' => 'btn btn-success w3-margin-top']) }}
            {!! Form::close() !!}
        </div>
    </div>
</div>
<div class="w3-display-container w3-white">
    <div style="white-space:nowrap;" class="container">
        <h2>New Here?</h2><hr>
        <div class="col-md-8 col-md-offset-2 w3-margin-bottom">
            {!! Form::open(['route' => 'register']) !!}
                <div class="form-group {{ $errors->has('name') ? 'has-error has-feedback' : '' }}">
                    {{ Form::label('name', 'Username...', ['class' => 'control-label']) }}
                    {{ Form::text('name', null, ['class' => 'form-control', 'placeholder' => 'username...']) }}
                    <span class="{{ $errors->has('name') ? 'glyphicon glyphicon-remove form-control-feedback' : '' }}"></span>
                </div>
                <div class="form-group {{ $errors->has('email') ? 'has-error has-feedback' : '' }}">
                    {{ Form::label('email', 'Email...', ['class' => 'control-label']) }}
                    {{ Form::email('email', null, ['class' => 'form-control', 'placeholder' => 'email...']) }}
                    <span class="{{ $errors->has('email') ? 'glyphicon glyphicon-remove form-control-feedback' : '' }}"></span>
                </div>
                <div class="form-group {{ $errors->has('password') ? 'has-error has-feedback' : '' }}">
                    {{ Form::label('password', 'Password...', ['class' => 'control-label']) }}
                    {{ Form::password('password', ['class' => 'form-control', 'placeholder' => 'passsword...']) }}
                    <span class="{{ $errors->has('password') ? 'glyphicon glyphicon-remove form-control-feedback' : '' }}"></span>
                </div>
                <div class="form-group {{ $errors->has('password') ? 'has-error has-feedback' : '' }}">
                    {{ Form::label('password_confirmation', 'Confirm Password...', ['class' => 'control-label']) }}
                    {{ Form::password('password_confirmation', ['class' => 'form-control', 'placeholder' => 'confirm password...']) }}
                    <span class="{{ $errors->has('password') ? 'glyphicon glyphicon-remove form-control-feedback' : '' }}"></span>
                </div>
                {{ Form::submit('Sign Up', ['class' => 'btn btn-success w3-margin-top']) }}
            {!! Form::close() !!}
        </div>
    </div>
</div>

我使用bootstrap和w3schools进行样式化。

我得到的问题是,当我提交任何一个空输入的表格时,它会给我两个表格中的错误 那是(例如),当我提交带有空电子邮件和密码字段的登录表单时,错误显示在登录表单和注册表单中,该字段为空。
我该如何解决? 我想以不同的方式显示错误。
对我的代码或我的问题仍有任何疑问,请在下面发表评论。

我甚至看了this寻求帮助,但它是laravel 5.2,laravel 5.3有不同的auth路由系统

1 个答案:

答案 0 :(得分:1)

那是因为你在两个人身上都显示了错误{{ $errors->has('email') ? 'has-error has-feedback' : '' }}这段代码同时出现在寄存器和登录表单中,因此错误会显示在两者上。

一种解决方案可能是使用PHP&amp;和自己创建验证。 jQuery / JavaScript,通过这种方式,您可以完全自定义错误等。这需要更长的时间,而且稍微难以做到但是可行的