我创建了2个单独的表单。一个用于登录,一个用于注册。它们在单独的页面上工作正常,但如果它们在同一页面上,则会打印彼此的错误消息。我猜它是因为它们都包含相同的输入名称。
他们有单独的控制器方法。以下是示例设置。
注册表单
{{ Form::open(['route' => 'signup']) }}
<div class="form-group">
{{ Form::label('email', 'Email') }}
{{ Form::text('email', null, ['class' => 'form-control']) }}
{{ $errors->first('email', '<p class="error">:message</p>')}}
</div>
<div class="form-group">
{{ Form::label('password','Paswword') }}
{{ Form::password('password', ['class' => 'form-control']) }}
<p class="help-block">Password needs to be between 6 - 8 characters</p>
{{ $errors->first('password', '<p class="error">:message</p>')}}
</div>
<div class="form-group">
{{ Form::submit('Sign up', ['class' => 'btn btn-primary']) }}
</div>
{{ Form::close() }}
登录表单
{{ Form::open(['route' => 'login']) }}
<div class="form-group">
{{ Form::label('email', 'Email') }}
{{ Form::text('email', null, ['class' => 'form-control']) }}
{{ $errors->first('email', '<p class="error">:message</p>')}}
</div>
<div class="form-group">
{{ Form::label('password','Paswword') }}
{{ Form::password('password', ['class' => 'form-control']) }}
{{ $errors->first('password', '<p class="error">:message</p>')}}
</div>
<div class="form-group">
{{ Form::submit('Login', ['class' => 'btn btn-primary']) }}
</div>
{{ Form::close() }}
routes.php文件
Route::get('/signup', [
'as' => 'signup',
'uses' => 'UsersController@getSignup'
]);
Route::post('/signup', [
'as' => 'signup',
'uses' => 'UsersController@postSignup'
]);
只是想知道是否有其他人遇到过这个问题以及如何解决它。
由于
答案 0 :(得分:5)
http://laravel.com/docs/4.2/validation#error-messages-and-views
命名错误包
如果您在一个页面上有多个表单,您可能希望将MessageBag命名为错误。这将允许您检索特定表单的错误消息。只需将名称作为第二个参数传递给withErrors:
return Redirect::to('register')->withErrors($validator, 'login');
然后,您可以从$ errors变量访问命名的MessageBag实例:
<?php echo $errors->login->first('email'); ?>