【问题标题】:Laravel BadMethodCallExceptionLaravel BadMethodCallException
【发布时间】:2014-01-03 09:42:32
【问题描述】:

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

我尝试将数组更改为仅 name 和 signup,name 但仍然出现分别更改方法的错误。我想知道我做错了什么以及在填写完字段后如何解决这个问题?

【问题讨论】:

  • 您到底想用'name' =&gt; array('required', 'users,name'), 中的users,name 做什么?
  • 我不完全确定,我只是按照伙计们的教程。我已经删除了那部分,现在一切正常。 :)

标签: php laravel laravel-4


【解决方案1】:

你好像也忘了在名字里说unique

$rules = array(
    'name' => array('required', 'unique:users,name'),
    'email' => array('required', 'email', 'unique:users,email')
);

但你真的想让 name 成为一个唯一的列吗?你可能会遇到这个问题......所以你可以选择:

$rules = array(
    'name' => array('required'),
    'email' => array('required', 'email', 'unique:users,email')
);

【讨论】:

    猜你喜欢
    • 2021-10-06
    • 2013-10-28
    • 2020-05-03
    • 1970-01-01
    • 2017-10-27
    • 2021-12-29
    • 2018-11-12
    • 2018-06-17
    • 1970-01-01
    相关资源
    最近更新 更多