0

Я тестирую PHPUnit 4.0, Laravel 5.2, PHP 5.5.9 и продолжаю получать ошибку ERROR: исключение «RuntimeException» с сообщением «Хранилище сеансов, не заданное по запросу». в /var/www/html/vendor/laravel/framework/src/Illuminate/Http/Request.php:85Laravel 5.2: Магазин сеансов не установлен по запросу. Ошибка для шаблонов Blade со старым()

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

Если я удалю {{old ('username')}} из формы, ошибка исчезнет. Я видел несколько сообщений по этой проблеме, используя метод old(); однако я обновил kernel.php, переместил маршрут под группой промежуточного программного обеспечения, чтобы ссылаться на «web», и даже перешел к стартовому сеансу по умолчанию в промежуточном средстве() в 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 

Мой routes.php выглядит следующим образом:

<?php 

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

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

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

У меня есть даже попробовал добавить новый блок в 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'); 
+0

У меня та же isue: '( – roll

ответ

0

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

\ Осветите \ Support \ \ Фасады Request :: setSession ($ this-> приложение [ 'session.store'])

+0

сейчас работает для меня. – gandra404