Я использую последнюю версию Laravel (5.7), и моя проблема в проверке формы, errorBag всегда пуст, остальное работает нормально, сеансы и даже флэш-данные работают, но при проверке формы errorBag всегда пусто
Я пытался использовать файловый драйвер в SESSION_DRIVER, и он работал, но с моим пользовательским драйвером он не будет работать.
Я создал собственный драйвер Redis, мне нужен был специальный, потому что я хотел хранить данные в redis как json, а не как php-сериализованный, потому что позже на сервере nodejs я проверяю, что данные и использование json проще, чем парсинг php-сериализованные данные в nodejs.
Это пользовательский драйвер, который я написал:
<?php
/**
* Created by PhpStorm.
* User: jordi
* Date: 19/12/18
* Time: 20:49
*/
namespace App\Extensions\Sessions;
use Illuminate\Support\Facades\Redis;
class JsonSessionHandler implements \SessionHandlerInterface
{
public function close()
{
// TODO: Implement close() method.
return true;
}
public function destroy($session_id)
{
$key = 'laravel_cache:'.$session_id;
Redis::del($key);
return true;
}
public function gc($maxlifetime)
{
return true;
}
public function open($save_path, $name)
{
return true;
}
/*
* {@inheritdoc}
*/
public function write($sessionId, $data)
{
$key = 'laravel_cache:'.$sessionId;
$jsonData = json_encode(unserialize($data));
$expireTime = env('SESSION_LIFETIME', 120) * 60;
Redis::set($key, $jsonData, 'EX', $expireTime);
return true;
}
/*
* {@inheritdoc}
*/
public function read($sessionId)
{
$key = 'laravel_cache:'.$sessionId;
$sessionData = serialize(json_decode(Redis::get($key), true));
return $sessionData;
}
}
Все работает нормально, сеансы, перепрошивка данных, но когда мне нужно проверить форму с помощью встроенной системы проверки в Laravel, она не работает, как я уже сказал, что я пробовал FileDriver для сессии, и она работала правильно, поэтому я думаю, проблема из моего пользовательского драйвера redis.
ПРИМЕЧАНИЕ 1:
После некоторого тестирования я обнаружил, что проблема заключается в сериализации и json_encoding, я думаю, некоторые данные могут быть потеряны, возможно, из-за того, что метаданные класса теряются в json, есть какой-то обходной путь?