Когда я хочу зарегистрировать пользователя в своем 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
переменная.
Почему это? У меня никогда не было этой проблемы прежде.
Кто-то может помочь мне?
Необходимо удостовериться, что в 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], Вы могли бы получить очень неожиданные результаты.
У меня была эта точно та же проблема с Laravel 5.2.x.
Внутренняя часть routes.php
попытка файла эй создают Ваши маршруты в
Route::group(['middleware' => ['web']], function () {
//routes here
}
оператор.
Также знать: Если Вы, которых тесты записи и Ваше представление имеют переменная $errors, удостоверяетесь, что не используете черта WithoutMiddleware .
Я имел подобную проблему и решил этого путем добавления маршрутов в массив свойства промежуточного программного обеспечения также,
, НО
это работало только после вызова php artisan route:cache
(очищающий кэш маршрутов) впоследствии.
я надеюсь, что некоторые из Вас нашли бы это полезным.
Я видел эту ошибку также и позже понял, что использовал WithoutMiddleware
черта как средство обойти аутентификацию для этого конкретного теста, но это закончило тем, что удалило ошибку проверки, связывающую также. Таким образом, я должен был прекратить использовать черту для хранения работы представлений.
Перейдите в файл App\Http\Kernel.php . Переместите все вещи $middlewareGroups
свойства к $middleware
.
Проверка на большее количество деталей - http://www.tisuchi.com/laravel-5-2-undefined-variable-error-validation/
количество не действительно realiable, так как оно предполагает, что переменная уже существует. измените проверку условия на: @if($errors->has())
или всего @if($errors)
Также, если Вы перенаправляете, удостоверяются, что использовали это в Вашем контроллере
return redirect()->back()->with('errors', $validator->messages());
РЕДАКТИРОВАНИЕ: замеченный теперь, когда Вы используете L5.2, Это может ответить на Ваш вопрос - необходимо поместить Маршруты в Группу маршрутов.
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.
заставляют Ваше ядро быть похожим на это
Ваша проблема будет решена при помощи этого метода.
Route::group(['middleware' => ['web']], function () {
//routes should go here
});
, Если это не помогает Вам, просто выполняет следующую ремесленную команду в дополнение к вышеупомянутому коду:
php artisan key:generate
я решил таким образом при использовании 5.2.*
Это не была на самом деле ошибка, это предупреждало, что можно удалить использование php error_reporting () функция
, я удалил предупреждение в своем laravel 5.6 при помощи
error_reporting (E_ALL ^ E_NOTICE);
[еще 114] Деталь: http://php.net/manual/en/function.error-reporting.php
Hope это поможет Вам, спасибо