2016-04-21 5 views
2

У меня проблема с Laravel, как говорится в названии. Мой код:

Функция контроллера:

$validator = Validator::make($request->all(), [ 
     'login' => 'required|max:10', 
     'katalog' => 'required', 
     'limitip' => 'required|ip', 
    ]); 

    if($validator->fails()){ 
     return redirect('something/toedit/someone')->withErrors($validator)->withInput(); 
    } 
    else{ 
     echo "Clear."; 
    } 

И маршрут:

Route::get('something/toedit/{login}',['middleware' => 'auth', 'uses'=>'[email protected]']); 

Route::post('something/toedit',['middleware' => 'auth', 'uses'=>'[email protected]']); 

И теперь проблема заключается в том, что этот код на мой взгляд, всегда не возвращают ничего.

@if (count($errors) > 0) 
    <div class="alert alert-danger"> 
     <ul> 
      @foreach ($errors->all() as $error) 
       <li>{{ $error }}</li> 
      @endforeach 
     </ul> 
    </div> 
@endif 

Также {{COUNT (ошибки $)}} он равен 0. Но если я использую такой код:

@if (Session::has('errors')) 
    {{var_dump(Session::get('errors'))}} 
@endif 

Это возвращение на мой взгляд, что:

объект (Illuminate \ Support \ ViewErrorBag) # 146 (1) {["bags": protected] => array (1) {["default"] => object (Illuminate \ Support \ MessageBag) # 147 (2) {[ «messages»: protected] => array (1) {["login"] => array (1) {[0] => string (48) "Вход может быть не более 10 персонажи." }} ["format": protected] => string (8) ": message"}}}

Может ли кто-нибудь помочь мне получить доступ к ошибкам переменной $ errors в моем представлении с лезвием? Я действительно смущен.

+0

Try session() -> get ('errors') – Abhishek

+0

Как это может помочь? – Lukasin

+0

Почему бы вам просто не попробовать? – Abhishek

ответ

0

$errors переменных может быть добавлен с помощью веб- промежуточной группы, которая включает в себя ShareErrorsFromSession. Вы можете применить это к вашим маршрутам несколько различных способов:

// Apply to a single route 
Route::get('/', ['middleware' => ['auth', 'web'], function() { 
    // 
}]); 

// To a group of routes 
Route::group(['middleware' => ['auth', 'web']], function() { 
    Route::get(...); 
    Route::post(...); 
}); 

См https://laravel.com/docs/5.2/middleware#assigning-middleware-to-routes

+0

«web» промежуточное программное обеспечение автоматически применяется ко всем маршрутам с 5.2.27 –

+0

Я думаю, что это не проблема. Я изменил свои маршруты, как вы говорите, и теперь у меня ничего нет в сеансе ошибок. Artisan говорит мне, что у меня есть doube «web» Middleware. – Lukasin

1

Я имел подобный вопрос на Laravel 5.2.41. В моем случае $ errors-> имеет() всегда возвращает 1, даже если нет ошибки.

Найдено решение от Laracasts: -

$errors->has() returns true since framework upgrade

$errors->has() Заменить с $errors->any() или $errors->count() > 0 будет делать.

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