2013-08-09 4 views
0

У меня есть проблема при использовании маршрута :: пост в Laravel 4.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); 
    } 
} 

Это мой routes.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 

Проблема, кажется, когда форма представляет Маршрута :: пост он не признает

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

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

var_dump($v) 

имеет значение null.

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

ответ

2

Вы забыли вернуть свой экземпляр 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); 
    } 
} 
+0

Спасибо, человек. Я на самом деле просто понял это и пришел, чтобы сказать, что это было выяснено, но спасибо в любом случае за ваш быстрый ответ;) –

+0

Пожалуйста, проверьте [это] (http://stackoverflow.com/questions/40100906/code-will-be-execute -or-stop-if-validation-fail-in-laravel), нужна помощь. –