我一直在松散地遵循本教程(http://jasonlewis.me/article/laravel-using-forms-and-the-validator)并在此与Laravel文档之间切换,以尝试在我的注册表单上获得某种形式的验证。我正在使用Laravel 4.1并将一些路由移动到控制器。
这是注册页面的路线代码
Route::resource('signup', 'Signup');
我的观看代码......
{{ Form::open(array('signup', 'post')) }}
<div class="row">
<div class="large-10 large-centered columns @if($errors->has()) error @endif">
{{ Form::label('name', 'Name') . Form::text('name') }}
@if($errors->has())
<small class="error">{{ $errors->first('name') }}</small>
@endif
</div>
</div>
<div class="row">
<div class="large-10 large-centered columns @if($errors->has()) error @endif">
{{ Form::label('email', 'Email Address') . Form::email('email') }}
@if($errors->has())
<small class="error">{{ $errors->first('email') }}</small>
@endif
</div>
</div>
<div class="row">
<div class="large-10 large-centered columns">
{{ Form::submit('Submit', array('class' => 'success button')) }}
</div>
</div>
{{ Form::close() }}
我的控制器代码......
public function store()
{
//
$rules = array(
'name' => array('required', 'users,name'),
'email' => array('required', 'email', 'unique:users,email')
);
$validation = Validator::make(Input::all(), $rules);
if ($validation->fails())
{
// Validation has failed.
return Redirect::to('signup')->withInput()->withErrors($validation);
}
}
现在出现问题...如果我将所有字段留空,则会出现错误,告诉我没有输入任何内容,这对于我输入电子邮件时没有问题,但没有其他内容。但是当我输入一个名字时,它告诉我Method [validateUsers,name]不存在。
我已经尝试将数组更改为只是名称和注册名称,但它仍然会出现分别更改方法的错误。我想知道我做错了什么,如何在填写字段时解决这个问题?
答案 0 :(得分:1)
您似乎忘了在名字中说unique
:
$rules = array(
'name' => array('required', 'unique:users,name'),
'email' => array('required', 'email', 'unique:users,email')
);
但你真的想让名字成为一个独特的专栏吗?你可能会遇到这方面的问题......所以你可以选择:
$rules = array(
'name' => array('required'),
'email' => array('required', 'email', 'unique:users,email')
);