Ошибка Laravel 4: вызов функции-члена pass() для не-объекта

У меня проблема при использовании Route::post в Laravel 4.

Это мой код User.php (модель laravel):

class User extends Eloquent implements UserInterface, RemindableInterface {

  public static function validate($input)
  {
    $rules = array(
    'email' => 'Required|Between:3,64|Email|Unique:users',
    'password' => 'Required|AlphaNum|Between:4,8|Confirmed',
    'password_confirmation' => 'Required|AlphaNum|Between:4,8'
    );

    $v = Validator::make($input, $rules);
  }
}

Это мой код route.php:

Route::post('register', function()
{
  $v = User::validate(Input::all());

      if ($v->passes()){
      $u = new User();
      $u->email = Input::get('email');
      $u->password = Hash::make(Input::get('password'));
      $u->save();
      Auth::login($u);

      return Redirect::to('createprofile');
    }
    else{
      return Redirect::to('register')->withErrors($v->getMessageBag());
    }
});

Это мой код register_user.blade.php:

@section('content')
    {{ Form::open(array('url' => '/register', 'method' => 'post')) }}
    {{ Form::text('email') }}
    {{ Form::label('email', 'Your Email') }}</br>
    {{ Form::password('password'); }}
    {{ Form::label('password', 'Your Password') }}</br>
    {{ Form::password('password_confirmation'); }}
    {{ Form::label('password_confirmation', 'Confirm Your Password') }}</br>
    {{ Form::submit('Go') }}
  {{ Form::close() }}
@stop

Кажется, проблема заключается в том, что когда форма отправляется в Route::post, она не распознает

$v = User::validate(Input::all()) 

как допустимый объект, вместо этого давая мне вызов функции-члена pass() для не-объекта.

var_dump($v)

становится равным нулю.

Кто-нибудь знает, в чем здесь проблема? Является ли User::validate() правильным способом вызова функции из модели User?


person Pavel Rogala    schedule 09.08.2013    source источник


Ответы (1)


Вы забыли вернуть свой экземпляр Validator;

class User extends Eloquent implements UserInterface, RemindableInterface {

  public static function validate($input)
  {
    $rules = array(
    'email' => 'Required|Between:3,64|Email|Unique:users',
    'password' => 'Required|AlphaNum|Between:4,8|Confirmed',
    'password_confirmation' => 'Required|AlphaNum|Between:4,8'
    );

    return Validator::make($input, $rules);
  }
}
person Antonio Carlos Ribeiro    schedule 09.08.2013
comment
Спасибо чувак. Я на самом деле только что понял это и собирался сказать, что это было выяснено, но все равно спасибо за ваш быстрый ответ;) - person Pavel Rogala; 09.08.2013
comment
Пожалуйста, проверьте это, нужна помощь . - person Ayaz Shah; 18.10.2016