Laravel BadMethodCallException

时间:2013-12-30 18:01:58

标签: php laravel laravel-4

我一直在松散地遵循本教程(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]不存在。

我已经尝试将数组更改为只是名称和注册名称,但它仍然会出现分别更改方法的错误。我想知道我做错了什么,如何在填写字段时解决这个问题?

1 个答案:

答案 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')
);