Неопределенная переменная: ошибки в Laravel

Когда я хочу зарегистрировать пользователя в своем laravel проекте, говорит страница всегда

Неопределенная переменная: ошибки (Представление:/var/www/resources/views/auth/register.blade.php)"

Согласно документации Laravel, $errors должен всегда автоматически устанавливаться:

Так, важно отметить, что переменная $errors всегда будет доступна во всех Ваших представлениях о каждом запросе, позволяя Вам удобно предположить, что переменная $errors всегда определяется и может безопасно использоваться.

У меня есть это на на каждом представлении, когда я использую:

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

или любой другой путь, когда я хочу использовать $errors переменная.

Почему это? У меня никогда не было этой проблемы прежде.

Кто-то может помочь мне?

62
задан 22 February 2016 в 11:40

10 ответов

Необходимо удостовериться, что в app/Http/Kernel.php в middlewareGroups свойство для web Вы имеете:

\Illuminate\View\Middleware\ShareErrorsFromSession::class,

в этом массиве. Сравните это с [1 118] https://РЕДАКТИРОВАНИЕ github.com/laravel/laravel/blob/master/app/Http/Kernel.php

, кажется, что необходимо добавить 'middleware' => 'web' для маршрута, который Вы используете или помещаете \Illuminate\View\Middleware\ShareErrorsFromSession::class, в $middleware массив свойства

или

, Внутренняя часть routes.php файла пытается создать Ваши маршруты в следующем блоке

Route::group(['middleware' => ['web']], function () {
    //routes here
});

ОБНОВЛЕНИЕ ДЛЯ БОЛЕЕ НОВЫХ ВЕРСИЙ ПРИЛОЖЕНИЯ

LARAVEL знать, что Вы могли бы столкнуться с проблемами также в случае, если Вы используете web промежуточное программное обеспечение дважды. Было изменение в приложении 5.2.27 Laravel (не путайте его с платформой Laravel, которую Вы используете в данный момент - Вы могли бы использовать платформу Laravel, например, 5.2.31, но иметь приложение Laravel в версии 5.2.24), в котором web промежуточное программное обеспечение применяется автоматически для всех маршрутов. Таким образом в случае проблем, необходимо открыть Ваш app/Providers/RouteServiceProvider.php файл и проверить его содержание.

можно сравнить его также здесь:

Laravel В случае, если у Вас есть более новая версия (который применяется web промежуточное программное обеспечение автоматически), Вы не должны использовать web промежуточное программное обеспечение в [1 113] больше, или необходимо изменить Ваш RouteServiceProvider метод для не применения web промежуточное программное обеспечение группы. Иначе, если web группа промежуточного программного обеспечения автоматически применяется в этом поставщике, и Вы используете ее также в [1 117], Вы могли бы получить очень неожиданные результаты.

110
ответ дан 31 October 2019 в 13:37

У меня была эта точно та же проблема с Laravel 5.2.x.

Внутренняя часть routes.php попытка файла эй создают Ваши маршруты в

Route::group(['middleware' => ['web']], function () {
    //routes here
}

оператор.

19
ответ дан 31 October 2019 в 13:37

Также знать: Если Вы, которых тесты записи и Ваше представление имеют переменная $errors, удостоверяетесь, что не используете черта WithoutMiddleware .

4
ответ дан 31 October 2019 в 13:37

Я имел подобную проблему и решил этого путем добавления маршрутов в массив свойства промежуточного программного обеспечения также,

, НО

это работало только после вызова php artisan route:cache (очищающий кэш маршрутов) впоследствии.

я надеюсь, что некоторые из Вас нашли бы это полезным.

3
ответ дан 31 October 2019 в 13:37

Я видел эту ошибку также и позже понял, что использовал WithoutMiddleware черта как средство обойти аутентификацию для этого конкретного теста, но это закончило тем, что удалило ошибку проверки, связывающую также. Таким образом, я должен был прекратить использовать черту для хранения работы представлений.

2
ответ дан 31 October 2019 в 13:37

Перейдите в файл App\Http\Kernel.php . Переместите все вещи $middlewareGroups свойства к $middleware.

Проверка на большее количество деталей - http://www.tisuchi.com/laravel-5-2-undefined-variable-error-validation/

2
ответ дан 31 October 2019 в 13:37

количество не действительно realiable, так как оно предполагает, что переменная уже существует. измените проверку условия на: @if($errors->has()) или всего @if($errors)

Также, если Вы перенаправляете, удостоверяются, что использовали это в Вашем контроллере

return redirect()->back()->with('errors', $validator->messages());

РЕДАКТИРОВАНИЕ: замеченный теперь, когда Вы используете L5.2, Это может ответить на Ваш вопрос - необходимо поместить Маршруты в Группу маршрутов.

ошибки Laravel 5.2 проверки

1
ответ дан 31 October 2019 в 13:37
protected $middleware = [              \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
    \Social\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \Social\Http\Middleware\VerifyCsrfToken::class,
];

/**
 * The application's route middleware groups.
 *
 * @var array
 */
protected $middlewareGroups = [
    'web' => [

    ],

    'api' => [
        'throttle:60,1',
    ],
];

/**
 * The application's route middleware.
 *
 * These middleware may be assigned to groups or used individually.

заставляют Ваше ядро быть похожим на это

0
ответ дан 31 October 2019 в 13:37

Ваша проблема будет решена при помощи этого метода.

Route::group(['middleware' => ['web']], function () {
        //routes should go here
});

, Если это не помогает Вам, просто выполняет следующую ремесленную команду в дополнение к вышеупомянутому коду:

php artisan key:generate

я решил таким образом при использовании 5.2.*

0
ответ дан 31 October 2019 в 13:37

Это не была на самом деле ошибка, это предупреждало, что можно удалить использование php error_reporting () функция

, я удалил предупреждение в своем laravel 5.6 при помощи

error_reporting (E_ALL ^ E_NOTICE);

[еще 114] Деталь: http://php.net/manual/en/function.error-reporting.php

Hope это поможет Вам, спасибо

-2
ответ дан 31 October 2019 в 13:37

Другие вопросы по тегам:

Похожие вопросы: