2015-01-12 3 views
0

Я тестировал эту новую структуру (Laravel), и теперь я следую этим примерам, которые они внесли в их документацию. Все идет хорошо, пока у меня не возникнет такая проблема.Laravel withError не работает

Я звоню Redirect::to('\signup')->withErrors($validator->messages());, но его ничего не показываю , но если я просто распечатаю его как print_r($validator->messages());, это покажет мне ошибки. Пожалуйста, помогите мне и скажите, где я иду не так?

Контроллер

public function registerUser(){ 
    $validator = Validator::make(Input::all(),array(
      'username' => 'required|email|unique:user', 
      'password' => 'required|min:8', 
      'fullname' => 'required' 
     ) 
    ); 
    if($validator->fails()){ 

     return Redirect::to('signup')->withInput()->withErrors($validator); 
    }else{ 
     return Redirect::route('user'); 
    } 

} 

Маршрут Route::get('/signup',array('as'=>'signup', 'uses'=>'[email protected]'));

Посмотреть

<?php print_r($errors) ; ?> 
+0

Не могли бы вы вставить код, как вы отображаете ошибку? –

+0

Вы говорите в вопросе, что вы вызываете '' withErrors ($ validator-> messages()) '', но в примере кода вы вызываете '' withErrors ($ validator) '' - что это такое? –

+0

Я пробовал оба сErrors ($ validator) и withErrors ($ validator-> messages()), ни один из них не работает. @nhbjgfcxhgchg – awaistoor

ответ

0

Проблема заключалась в том, что я изменил параметр secure истина в session файл (в папке config) и тестировал его на локальном сервере без https. Вот почему мои ошибки не показывались.

3

Вот соответствующая информация с сайта Laravel:

Route::post('register', function() 
{ 
    $rules = array(...); 

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

    if ($validator->fails()) 
    { 
     return Redirect::to('register')->withErrors($validator); 
    } 
}); 

Что вы можете ссылаться из Клинка, как это ...

<?php echo $errors->first('email'); ?> 

Обратите внимание, как $ ошибок является объектом? Вы вызываете print_r($errors), что может не дать очень полезного результата.

Попробуйте это ...

<?php 
    var_dump($errors->first('username')); 
    var_dump($errors->first('password')); 
    var_dump($errors->first('email')); 
?> 

также: Ваш unique: проверка пользователя должна, вероятно, будет unique:user,username. Используйте имя таблицы базы данных и имя столбца, а не значения модели.

Примечание: Если вы тестируете это в браузере, вы можете посмотреть в использовании Clockwork, который позволяет просматривать информацию о сеансе из браузера без print_r/var_dump вызовов.

+0

сэр спасибо за ваш ответ, но я нашел свою проблему .. я изменил secure = true в файле сеанса (в папке config) и тестировал его на локальном веб-сервере без https, поэтому я не получил ответ, поскольку сообщения об ошибках были сохранены в сеансах. Но все же спасибо за ваш подробный ответ и некоторые другие вещи, которые вы указали, действительно оценили :) – awaistoor

+0

[Laravel Debugbar] (https://github.com/barryvdh/laravel-debugbar) также очень полезно: D –