Laravel 5.2: хранилище сеансов не устанавливается по запросу. Ошибка для шаблонов Blade с функцией old()

Я тестирую PHPUnit 4.0, Laravel 5.2, PHP 5.5.9 и продолжаю получать сообщение об ошибке ОШИБКА: исключение «RuntimeException» с сообщением «Хранилище сеансов не установлено по запросу». в /var/www/html/vendor/laravel/framework/src/Illuminate/Http/Request.php:85

Чтобы исключить это, промежуточное ПО включено.

Если я удалю {{ old('username') }} из формы, ошибка исчезнет. Я видел несколько сообщений по этой проблеме с использованием метода old(); тем не менее, я обновил kernel.php, переместил маршрут в группу промежуточного программного обеспечения для ссылки на «сеть», даже переместил начальный сеанс в массив промежуточного программного обеспечения по умолчанию () в kernel.php. Я также пытался вызвать сеанс из TestCase.php. Ни на одном из форумов нет рабочего решения. Я что-то упустил в синтаксисе или это ошибка в Laravel?

Мой файл kernel.php выглядит так

<?php

namespace App\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel
{

    protected $middleware = [
        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class
    ];

    protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
        ],
        'api' => [
            'throttle:60,1',
        ],
    ];

    protected $routeMiddleware = [
        'sso'           => \App\Http\Middleware\SsoEnabled::class
        ];
}

Мой signup.blade.php выглядит так:

@extends('layouts.main')
@section('body')
    <body>
    <h2>Signup</h2>
    <form class="m-t" role="form" method="POST" action="/signup">
        <div class="form-group">
            <input name="username" type="text" placeholder="Username" value="{{ old('username') }}" required="">
        </div>
        <button type="submit" name="Signup" >Signup</button>
    </form>
    </body>
@endsection

Мои маршруты.php выглядит так:

<?php

    Route::group(['middleware' => ['web']], function () {

            Route::group(array('middleware' => ['sso:0']), function ($key) {

                Route::get('signup/{token}', [
                    'as'   => 'customer.signup',
                    'uses' => 'SignupController@getApplication'
        ]);
    });
});

Я даже безуспешно пытался добавить новый блок в testCase.php setUp:

$this->app['config']->set('session', [
    'driver'          => 'array',
    'lifetime'        => 120,
    'expire_on_close' => false,
    'encrypt'         => false,
    'lottery'         => [2, 100],
    'path'            => '/',
    'domain'          => 'localhost',
    'secure'          => true,
    'email'           => '[email protected]',
    'store'           => 'storage'
]);
    $kernel = app('Illuminate\Contracts\Http\Kernel');
    $kernel->pushMiddleware('Illuminate\Session\Middleware\StartSession');

person Nabsta    schedule 28.03.2016    source источник
comment
У меня такая же проблема :'(   -  person Rolly    schedule 26.10.2016


Ответы (1)


Не уверен, что это лучшее решение, но мне удалось заставить его работать правильно, установив хранилище сеансов в setUp().

\Illuminate\Support\Facades\Request::setSession($this->app['session.store'])

person Nabsta    schedule 28.03.2016