Проверка ввода Laravel не работает (флеш-сообщения) - PullRequest
0 голосов
/ 04 января 2019

Я использую последнюю версию 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, есть какой-то обходной путь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...