0

Laravel 4 で Route::post を使用すると問題が発生します。

これは私の 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

問題は、フォームが Route::post に送信されたときに認識されないようです

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

代わりに、非オブジェクトでメンバー関数の pass() を呼び出します。

var_dump($v)

null に等しくなります。

ここで何が問題なのか誰にもわかりませんか?User::validate() は User モデルから関数を呼び出す正しい方法ですか?

4

1 に答える 1

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);
  }
}
于 2013-08-09T17:43:27.303 に答える