2013-12-08 3 views
0

Я работаю с проверкой Laravel 4 прямо сейчас. Моя основная настройка выполнена и протестирована. Я могу заполнить форму и представить ее контроллеру. Я могу сохранить все данные в базе данных с помощью модели. У меня проблема с проверкой.использование валидации в laravel 4

Я использую Input :: get() для захвата каждой из опубликованных переменных в контроллере. Я читал, что в идеале в модели должно быть сделано подтверждение. где я должен вызывать валидатор? Модель или контроллер? и как я должен передать валидатору $ input? это массив всех опубликованных переменных или я что-то упускаю?

Документация Laravel 4 действительно не иллюстрирует примеры ответов на общие вопросы использования.

Это валидатор я создал в моей модели:

public static function validate($input) 
    { 
     $rules = array(
      # place-holder for validation rules 
      'firstname' => 'Required|Min:3|Max:40|Alpha', 
      'lastname' => 'Required|Min:3|Max:40|Alpha', 
      'email'  => 'Required|Between:3,64|Email|Unique:users', 
      'country'  => 'Required', 
      'password' =>'Required|AlphaNum|Between:7,15|Confirmed', 
      'password_confirmation'=>'Required|AlphaNum|Between:7,15' 

     ); 

     # validation code 
     $validator = Validator::make($input, $rules); 

     /*if($validator->passes()) { 

     } else { 
      # code for validation failure 
     }*/ 
    } 

контроллер:

public function register() 
    { 
     /*Create new user if no user with entered email exists. Use validator to ensure all fields are completed*/ 
     $user = new User; 

     /*Handle input in POST*/ 
     $email = Input::get('email'); 
     $password = Input::get('password'); 
     $passwordConfirmed = Input::get('password_confirmation'); 
     $firstName = Input::get('firstname'); 
     $lastName = Input::get('lastname'); 
     $country = Input::get('country'); 

     $user->email = $email; 
     $user->password = Hash::make($password); 
     $user->firstname = $firstName; 
     $user->lastname = $lastName; 
     $user->country = $country; 

     //$user->save(); 


     $this->layout->content = View::make('test'); 
    } 

и я следовал this link до сих пор, когда речь идет о проверке. Пожалуйста, помогите, как я новичок в этих рамках

ответ

1

Вы отсутствующего вход в валидатор, вы не определили его

Используйте его как

$input = Input::all(); 

$validator = Validator::make($input, $rules); 

или

$validator = Validator::make(Input::all(), $rules); 

и взгляните на форумы, это поможет вам больше этого блога: http://forums.laravel.io/viewtopic.php?id=12104

+0

Sho uld проверка выполняется в контроллере или модели? Нет четкой информации об этом, но я бы догадался, что контроллер дал ему логику – spacemonkey

+0

выберите то, что когда-либо подходит вашему приложению, что вы строите, но его необязательно разместить в моделях, и одна вещь проверит этот пакет https: // github .com/laravelbook/ardent, многие люди используют его, включая мое «я», сэкономит вам много времени и его мощный –

+0

Спасибо, что он работает от контроллера. Хотя рекомендации в некоторых блогах утверждают, что используют его в модели, я решил пойти с контроллером, учитывая, что он логичен, и данные никогда не должны достигать модели, если не готовы к хранению. – spacemonkey

Смежные вопросы